Program belge düzeyi özelleştirmeleri

Belge düzeyinde özelleştirme kullanarak Microsoft Office Word veya Microsoft Office Excel'i genişlettiğiniz zaman, aşağıdaki görevleri gerçekleştirebilirsiniz:

  • Nesne modelini kullanarak uygulamayı otomatikleştirin.

  • Belgenin yüzeyine denetimler ekleyin.

  • Özelleştirme derlemesinden belgedeki Visual Basic for Applications (VBA) kodunu çağırın.

  • VBA'dan özelleştirme derlemesindeki kodu çağırın.

  • Microsoft Office yüklü olmayan bir sunucudayken belgenin belirli yönlerini yönetin.

  • Uygulamanın kullanıcı arabirimini (UI) özelleştirin.

    Şunlar için geçerlidir: Bu konudaki bilgiler Excel ve Word için belge düzeyi projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

    Belge düzeyi projelerinde kod yazmanın bazı yönleri Visual Studio'daki diğer proje türlerinden farklıdır. Bu farklılıkların birçoğu, Office nesne modellerinin yönetilen koda sunulma şeklinden kaynaklandı. Daha fazla bilgi için bkz . Office çözümlerinde kod yazma.

    Belge düzeyi özelleştirmeleri ve Visual Studio'daki Office geliştirme araçlarını kullanarak oluşturabileceğiniz diğer çözüm türleri hakkında genel bilgi için bkz . Office çözümleri geliştirmeye genel bakış (VSTO).

Belge düzeyi projelerinde oluşturulan sınıfları kullanma

Belge düzeyinde bir proje oluşturduğunuzda, Visual Studio projede otomatik olarak kodunuzu yazmaya başlamak için kullanabileceğiniz bir sınıf oluşturur. Visual Studio, Word ve Excel için farklı sınıflar oluşturur:

  • Word için belge düzeyi projelerinde, sınıf varsayılan olarak çağrılır ThisDocument .

  • Excel için belge düzeyi projelerinin birden çok oluşturulmuş sınıfı vardır: biri çalışma kitabının kendisi için, diğeri de her çalışma sayfası için. Varsayılan olarak, bu sınıflar aşağıdaki adlara sahiptir:

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

    Oluşturulan sınıf, belge açıldığında veya kapatıldığında çağrılan olay işleyicilerini içerir. Belge açıldığında kodu çalıştırmak için olay işleyicisine Startup kod ekleyin. Belge kapatılana kadar kodu çalıştırmak için olay işleyicisine Shutdown kod ekleyin. Daha fazla bilgi için bkz . Office projelerindeki olaylar.

Oluşturulan sınıfların tasarımını anlama

.NET Framework 4 veya .NET Framework 4.5'i hedefleyen projelerde, Office çalışma zamanı için Visual Studio Araçları konak öğesi türleri arabirimlerdir, bu nedenle oluşturulan sınıflar kendi uygulamalarını türetemez. Bunun yerine, oluşturulan sınıflar üyelerinin çoğunu aşağıdaki temel sınıflardan türetir:

  • ThisDocument: ' den DocumentBasetüretilir.

  • ThisWorkbook: ' den WorkbookBasetüretilir.

  • Sheetn: ' den WorksheetBasetüretilir.

    Bu temel sınıflar, üyelerine yapılan tüm çağrıları Office çalışma zamanı için Visual Studio Araçları ilgili konak öğesi arabirimlerinin iç uygulamalarına yönlendirir. Örneğin, sınıfının yöntemini çağırırsanızProtect, sınıfı bu çağrıyı DocumentBase Office çalışma zamanı için Visual Studio Araçları arabiriminin Document iç uygulamasına ThisDocument yönlendirir.

Konak uygulamasının nesne modeline erişme

Konak uygulamanın nesne modeline erişmek için projenizde oluşturulan sınıfın üyelerini kullanın. Bu sınıfların her biri Excel veya Word'ün nesne modelindeki bir nesneye karşılık gelir ve aynı özelliklerin, yöntemlerin ve olayların çoğunu içerir. Örneğin, Word için belge düzeyi projesindeki sınıf, ThisDocument Word nesne modelindeki nesneyle aynı üyelerin Document çoğunu sağlar.

Aşağıdaki kod örneği, Word için belge düzeyinde özelleştirmenin parçası olan belgeyi kaydetmek için Word nesne modelinin nasıl kullanılacağını gösterir. Bu örnek sınıfından ThisDocument çalıştırılmak üzere tasarlanmıştır.

this.Save();

Sınıfın dışından ThisDocument da aynı şeyi yapmak için sınıfına Globals erişmek ThisDocument için nesnesini kullanın. Örneğin, eylemler bölmesi kullanıcı arabirimine Kaydet düğmesi eklemek istiyorsanız bu kodu eylemler bölmesi kod dosyasına ekleyebilirsiniz.

Globals.ThisDocument.Save();

ThisDocument Sınıfı, üyelerinin çoğunu konak öğesinden Document aldığı için, Save bu kodda çağrılan yöntem gerçekten Save konak öğesinin Document yöntemidir. Bu yöntem, Word nesne modelindeki nesnenin Document yöntemine karşılık gelirSave.

Word ve Excel'in nesne modellerini kullanma hakkında daha fazla bilgi için bkz . Word nesne modeline genel bakış ve Excel nesne modeline genel bakış.

Nesne hakkında Globals daha fazla bilgi için bkz . Office projelerindeki nesnelere genel erişim.

Belgelere denetim ekleme

Belgenin kullanıcı arabirimini özelleştirmek için, belge yüzeyine Windows Forms denetimleri veya konak denetimleri ekleyebilirsiniz. Farklı denetim kümelerini birleştirerek ve kod yazarak denetimleri verilere bağlayabilir, kullanıcıdan bilgi toplayabilir ve kullanıcı eylemlerine yanıt vekleyebilirsiniz.

Konak denetimleri, Word ve Excel nesne modelindeki nesnelerin bazılarını genişleten sınıflardır. Örneğin, ListObject konak denetimi Excel'deki işlevinin ListObject tümünü sağlar. Ancak konak denetiminin ListObject ek olayları ve veri bağlama özellikleri de vardır.

Daha fazla bilgi için bkz . Konak öğelerine ve konak denetimlerine genel bakış ve Office belgelerinde Windows forms denetimlerine genel bakış.

VBA ve belge düzeyi özelleştirmelerini birleştirme

VBA kodunu, belge düzeyinde özelleştirmenin parçası olan bir belgede kullanabilirsiniz. Belgedeki VBA kodunu özelleştirme derlemesinden çağırabilir ve ayrıca projenizi belgedeki VBA kodunu özelleştirme derlemesindeki kodu çağıracak şekilde yapılandırabilirsiniz.

Daha fazla bilgi için bkz . VBA ve belge düzeyi özelleştirmelerini birleştirme.

Sunucudaki belgeleri yönetme

Microsoft Office Word veya Microsoft Office Excel yüklü olmayan bir sunucuda belge düzeyi özelleştirmelerinin birkaç farklı yönünü yönetebilirsiniz. Örneğin, belgenin veri önbelleğindeki verilere erişebilir ve bunları değiştirebilirsiniz. Belgeyle ilişkili özelleştirme derlemesini de yönetebilirsiniz. Örneğin, belgenin kodunuzu artık çalıştırmaması için derlemeyi program aracılığıyla belgeden kaldırabilir veya belgeye program aracılığıyla bir derleme ekleyebilirsiniz.

Daha fazla bilgi için bkz . ServerDocument sınıfını kullanarak bir sunucudaki belgeleri yönetme.

Microsoft Office uygulaması lications kullanıcı arabirimini özelleştirme

Belge düzeyinde özelleştirme kullanarak Word ve Excel kullanıcı arabirimini aşağıdaki yollarla özelleştirebilirsiniz:

Belge düzeyinde özelleştirmelerde yerel Office nesnelerinden genişletilmiş nesneler alma

Office olaylarının birçok olay işleyicisi, olayı tetikleyen çalışma kitabını, çalışma sayfasını veya belgeyi temsil eden yerel bir Office nesnesi alır. Bazı durumlarda, bazı kodları yalnızca belge düzeyi özelleştirmenizdeki çalışma kitabı veya belge olayı tetiklediyse çalıştırmak isteyebilirsiniz. Örneğin, Excel için belge düzeyi özelleştirmesinde, kullanıcı özelleştirilmiş çalışma kitabındaki çalışma sayfalarından birini etkinleştirdiğinde bazı kodlar çalıştırmak isteyebilirsiniz, ancak kullanıcı aynı anda açık olan başka bir çalışma kitabında çalışma sayfasını etkinleştirdiğinde bunu yapmak istemezsiniz.

Yerel bir Office nesneniz olduğunda, bu nesnenin belge düzeyi özelleştirmesinde bir konak öğesine mi yoksa konak denetimine mi genişletildiğini test edebilirsiniz. Konak öğeleri ve konak denetimleri, Office çalışma zamanı için Visual Studio Araçları tarafından sağlanan ve Word veya Excel nesne modellerinde yerel olarak bulunan nesnelere (yerel Office nesneleri olarak adlandırılır) işlevsellik ekleyen türlerdir. Konak öğeleri ve konak denetimleri toplu olarak genişletilmiş nesneler olarak da adlandırılır. Konak öğeleri ve konak denetimleri hakkında daha fazla bilgi için bkz . Konak öğelerine ve konak denetimlerine genel bakış.

GetVstoObject ve HasVstoObject yöntemlerini anlama

Yerel bir Office nesnesini test etmek için projenizde ve GetVstoObject yöntemlerini kullanınHasVstoObject:

  • Yerel Office nesnesinin HasVstoObject özelleştirmenizde genişletilmiş bir nesnesi olup olmadığını belirlemek istiyorsanız yöntemini kullanın. Bu yöntem, yerel Office nesnesinin genişletilmiş bir nesnesi varsa true, aksi takdirde false döndürür.

  • GetVstoObject Yerel bir Office nesnesi için genişletilmiş nesneyi almak istiyorsanız yöntemini kullanın. Belirtilen yerel Office nesnesi varsa bu yöntem bir ListObject, WorkbookWorksheet, veya Document nesnesi döndürür. Aksi takdirde null GetVstoObjectdöndürür. Örneğin, GetVstoObject word belge projenizdeki belgenin temel nesnesi belirtilen Document ise yöntemi bir Document döndürür.

    Belge düzeyi projelerinde, çalışma zamanında yeni Workbookbir , Worksheetveya Document konak öğesi oluşturmak için yöntemini kullanamazsınızGetVstoObject. Bu yöntemi yalnızca projenizde tasarım zamanında oluşturulan mevcut konak öğelerine erişmek için kullanabilirsiniz. Çalışma zamanında yeni konak öğeleri oluşturmak istiyorsanız, bir VSTO Eklenti projesi geliştirmeniz gerekir. Daha fazla bilgi için bkz . Konak öğelerinin ve konak denetimlerinin programlı sınırlamaları ve Çalışma zamanında VSTO Eklentilerinde Word belgelerini ve Excel çalışma kitaplarını genişletme.

GetVstoObject ve HasVstoObject yöntemlerini kullanma

ve yöntemini çağırmak HasVstoObject için veya Globals.Factory.HasVstoObject yöntemini kullanın Globals.Factory.GetVstoObject ve test etmek istediğiniz yerel Word veya Excel nesnesini (veya WorksheetgibiDocument) geçirin.GetVstoObject