Makale Özeti

Önceki makalelerde VSTO’yu gördük, şimdi word ile uygulama geliştirelim. Word ofis programları içerisinde en çok kullandığımız uygulamalardan bir tanesidir. Bir departman içerisinde birçok word belgesi bulunur ve bu belgelerin çoğunda ortak noktalar yer alır. Departmanların ihtiyaçlarına ve kültürlerine göre bu belgelere özel durumlar söz konusu olabilir. Bu gibi durumlar için hizmet verdiğiniz ekibin isteklerini yapmak ve işlerini kolaylaştırmak için yapacağınız geliştirmeleri bu sayede sağlayabilirsiniz.

Makale

WORD 2003 İçin Uygulama Geliştirme

Önceki makalelerde VSTO’yu gördük, şimdi word ile uygulama geliştirelim. Word ofis programları içerisinde en çok kullandığımız uygulamalardan bir tanesidir. Bir departman içerisinde birçok word belgesi bulunur ve bu belgelerin çoğunda ortak noktalar yer alır. Departmanların ihtiyaçlarına ve kültürlerine göre bu belgelere özel durumlar söz konusu olabilir. Bu gibi durumlar için hizmet verdiğiniz ekibin isteklerini yapmak ve işlerini kolaylaştırmak için yapacağınız geliştirmeleri bu sayede sağlayabilirsiniz.

Word dökümanının ilişkili olduğu .Net assembly’sini, word dökümanının özelliklerinden değiştirebilir veya yerini görebilirsiniz. Varsayılan olarak ilgili projenin bin klasörü içinde yer alır. Buradaki özellikle bu yeri değiştirebilirsiniz. Değişiklik yaptığınız zaman projeyi derlediğinizde ilgili assembly, bu yeni klasöre derlenir.

Yeni bir word dökümanı veya template’i yarattığınız zaman, projeniz içerisinde otomatik olarak OfficeCodeBehind sınıfı yaratılır. Bu sınıf, eğer projeniz bir VB.Net uygulaması ise ThisDocument.vb dosyası içinde, C# uygulaması ise ThisDocument.cs dosyası içinde yer alır.

Word obje modelinin sınıflarına erişim için iki değişken içerir. Bu değişkenler;

                    ThisApplication: Word ortamı ve Word obje modelindeki diğer objelere erişim için kullanılabilir. Buradaki özellikler (properties), metotlar (methods), olaylara (events) erişim sağlar.

                    ThisDocument: Bağlı word dökümanının veya template’inin özellikleri, metotları ve olaylarına erişim sağlar. Word obje modelindeki diğer objelerede erişim sağlanabilir.

Word dökümanı ve template’i projesi iki olay içerir. Bunlar;

                    ThisDocument_Open: Word dökümanı veya template’i açıldığı anda bu olay gerçekleşir.

ThisDocument_Close: Word dökümanı veya template’i kapandığı anda bu olay gerçekleşir.

Bu iki olay dışında word template’e özel bir olay daha vardır. Bu olay;

ThisDocument_New: Word template’i içinde yeni bir word template’i yaratıldığı anda bu olay gerçekleşir.

Word Obje Modeli Yapısı

Word obje modeli üzerinde VBA yazılımcılarının yabancılık çekeceği kadar büyük değişiklikler yoktur. Bu sebeple eski VBA yazılımcısı iseniz yeni hali size zor gelmeyecektir.

Word obje modelindeki anahtar objeler;

Application objesi: Word ortamındaki obje, özellik, metot ve olaylara erişimi sağlar. Application objesine ThisApplication değişkenini kullanarak erişebilirsiniz.

Documents koleksiyonları: Aktif word dökümanı üyesi olan tüm açık dökümanları refere eder. Documents koleksiyonu application objesinin bir özelliğidir. Bu koleksiyon ile döküman ekleme, açma, kaydetme ve kapatma işlemlerini gerçekleştirebilirsiniz.

Selection objesi: Selection objesi, Application objesinin özelliğidir. Bu obje ile, dökümandaki aktif seçili bilgi ile çalışabilir ve formatını düzenleyebilirsiniz.

Range objesi: Bu obje ile, tanımlanmış aralıklarda çalışabilirsiniz. Birden fazla range objesi ile aynı zamanda çalışabilirsiniz. Bir başlangıç ve bitiş karakteri bilgisi verirsiniz. Baktığımızda selection objesi ile benzerlik gösterir ancak Range objesi ile daha az kod yazarız ve daha fazla fonksiyonelliği mevcuttur.

Bunlar dışında da word obje modeli içinde birçok obje bulunmaktadır. Yardım dosyaları içinden diğer objelere de erişim sağlayabilirsiniz.

Document Koleksiyonu

Document koleksiyonu ve Document objesi ile word dökümanlarının kontrollerini sağlayabilirsiniz. Document koleksiyonunun Add metodu ile yeni bir döküman yaratabilirsiniz.

          Documents.Add(...)

Bu metot çalıştığı zaman New olayı devreye girer. Burada istediğiniz işlemleri gerçekleştirebilirsiniz.

Varolan bir dökümanı açmak için Documents koleksiyonunun Open metodunu kullanabilir, göndereceğiniz parametreler ile bu açma işlemini kişiselleştirebilirsiniz.

          Documents.Open(...)

Bu işlem gerçekleştiğinde, Document objesinin Open olayı ve Application objesinin DocumentOpen olayı devreye girer. Kişiselleştirme kodlarınızı buralara yazabilirsiniz.

Document objesinin Save veya SaveAs metotlarını kullanarak dökümanın kaydedilmesini sağlayabilirsiniz. Daha önce kaydedilmemiş bir döküman ise ve Save metodunu çağırmış iseniz word’ün SaveAs diyaloğu açılır. SaveAs metodunu çağırırsanız buradaki bilgileride istediğiniz gibi ayarlayabilirsiniz. Yine Document objesinin Saved özelliği ile, dökümanın en son kaydından sonra değişikliğe uğrayıp – uğramadığını kontrol edebilirsiniz.

Kayıt işleminden önce Application objesinin DocumentBeforeSave olayı çalışır. Kayıt öncesi kişisel kodlarınızı burada gerçekleştirebilirsiniz.

          Document.SaveAs(...)

          Document.Save()

Dökümanı kapatmak için, Document objesinin Close metodunu kullanabilirsiniz. Bu sırada Document objesinin Close olayı ve Application objesinin DocumentBeforeClose olayı meydana gelir. Kişisel kodlarınızı bu olaya yazabilirsiniz. Kapatma önce dökümanın otomatik olarak kaydedilmesi için Close metodunun SaveChanges parametresini kullanabilirsiniz.

          Document.Close(...)

Kaynak: MSDN

Yeliz Korkmaz, MVP

yelizkorkmaz@tnn.net