İzlenecek yol: VBA'dan VSTO Eklentisinde kod çağırma
Bu kılavuzda, VSTO Eklentisindeki bir nesnenin Visual Basic for Applications (VBA) ve COM VSTO Eklentileri de dahil olmak üzere diğer Microsoft Office çözümlerine nasıl gösterileceğini gösterilmektedir.
Şunlar için geçerlidir: Bu konudaki bilgiler VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.
Bu izlenecek yol özellikle Excel'i kullansa da, izlenecek yol tarafından sunulan kavramlar Visual Studio tarafından sağlanan tüm VSTO Eklenti proje şablonu için geçerlidir.
Bu izlenecek yol aşağıdaki görevleri gösterir:
Diğer Office çözümlerine açık olabilecek bir sınıf tanımlama.
sınıfını diğer Office çözümlerine ifşa etme.
VBA kodundan sınıfının yöntemini çağırma.
Not
Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz . IDE'yi kişiselleştirme.
Önkoşullar
Bu izlenecek yolu tamamlamak için aşağıdaki bileşenlere ihtiyacınız vardır:
Microsoft Office geliştirici araçlarını içeren bir Visual Studio sürümü. Daha fazla bilgi için bkz . Office çözümleri geliştirmek için bilgisayar yapılandırma.
Microsoft Excel
VSTO Eklenti projesi oluşturma
İlk adım, Excel için bir VSTO Eklenti projesi oluşturmaktır.
Yeni proje oluşturmak için
Excel VSTO Eklentisi proje şablonunu kullanarak ExcelImportData adlı bir Excel VSTO Eklentisi projesi oluşturun. Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Office Projeleri Oluşturma.
Visual Studio ThisAddIn.cs veya ThisAddIn.vb kod dosyasını açar ve ExcelImportData projesini Çözüm Gezgini ekler.
Diğer Office çözümlerine açıklayabileceğiniz bir sınıf tanımlama
Bu kılavuzun amacı, VBA kodundan VSTO Eklentinizde adlı AddInUtilities
sınıfın yöntemini çağırmaktırImportData
. Bu yöntem, etkin çalışma sayfasının A1 hücresine bir dize yazar.
Sınıfı diğer Office çözümlerine AddInUtilities
göstermek için sınıfı genel ve COM tarafından görünür hale getirmeniz gerekir. Ayrıca sınıfında IDispatch arabirimini de kullanıma sunmanız gerekir. Aşağıdaki yordamdaki kod, bu gereksinimleri karşılamanın bir yolunu gösterir. Daha fazla bilgi için bkz . Diğer Office Çözümlerinden VSTO Eklentilerinde Kod Çağırma.
Diğer Office çözümlerine açıklayabileceğiniz bir sınıf tanımlamak için
Proje menüsünde Sınıf Ekle'ye tıklayın.
Yeni Öğe Ekle iletişim kutusunda, yeni sınıfın adını AddInUtilities olarak değiştirin ve Ekle'ye tıklayın.
AddInUtilities.cs veya AddInUtilities.vb dosyası Kod Düzenleyicisi'nde açılır.
Aşağıdaki yönergeleri dosyanın en üstüne ekleyin.
sınıfını
AddInUtilities
aşağıdaki kodla değiştirin.[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }
Bu kod, sınıfı COM'da görünür hale getirir
AddInUtilities
ve yöntemini sınıfına eklerImportData
. IDispatch arabiriminiAddInUtilities
kullanıma açmak için sınıfı da özniteliğine ClassInterfaceAttribute sahiptir ve COM tarafından görülebilen bir arabirim uygular.
Sınıfı diğer Office çözümlerine sunma
sınıfını AddInUtilities
diğer Office çözümlerine göstermek için sınıfındaki RequestComAddInAutomationService yöntemini ThisAddIn
geçersiz kılın. Geçersiz kılmanızda sınıfının bir örneğini AddInUtilities
döndürür.
AddInUtilities sınıfını diğer Office Çözümlerinin kullanımına açmak için
Çözüm Gezgini'de Excel'i genişletin.
ThisAddIn.cs veya ThisAddIn.vb dosyasına sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.
Aşağıdaki kodu
ThisAddIn
sınıfına ekleyin.Yapı menüsünde Yapı Çözümü’ne tıklayın.
Çözümün hatasız derlendiğini doğrulayın.
VSTO Eklentisini Test Edin
Birkaç farklı office çözümü türünden AddInUtilities
sınıfına çağrı yapabilirsiniz. Bu kılavuzda, Bir Excel çalışma kitabında VBA kodu kullanacaksınız. Kullanabileceğiniz diğer Office çözümü türleri hakkında daha fazla bilgi için bkz . Diğer Office çözümlerinden VSTO Eklentileri'nde kod çağırma.
VSTO Eklentinizi test etmek için
Projenizi çalıştırmak için F5 tuşuna basın.
Excel'de, etkin çalışma kitabını Excel Makro Etkin Çalışma Kitabı (*.xlsm) olarak kaydedin. Masaüstü gibi uygun bir konuma kaydedin.
Şeritte Geliştirici sekmesine tıklayın.
Not
Geliştirici sekmesi görünmüyorsa, önce bunu göstermeniz gerekir. Daha fazla bilgi için bkz . Nasıl yapılır: Şeritte geliştirici sekmesini gösterme.
Kod grubunda Visual Basic'e tıklayın.
Visual Basic Düzenleyicisi açılır.
Proje penceresinde Bu Çalışma Kitabı'na çift tıklayın.
Nesnenin
ThisWorkbook
kod dosyası açılır.Kod dosyasına aşağıdaki VBA kodunu ekleyin. Bu kod önce ExcelImportData VSTO Eklentisini temsil eden bir COMAddIn nesnesi alır. Ardından kod, yöntemini çağırmak için COMAddIn nesnesinin
ImportData
Object özelliğini kullanır.Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
F5 tuşuna basın.
Çalışma kitabına yeni bir İçeri Aktarılan Veri sayfası eklendiğini doğrulayın. Ayrıca A1 hücresinde Bu benim verilerim dizesinin bulunduğunu doğrulayın.
Excel'de çıkın.
Sonraki adımlar
VSTO Eklentilerini programlama hakkında daha fazla bilgiyi şu konulardan öğrenebilirsiniz:
ThisAddIn
konak uygulamasını otomatikleştirmek ve VSTO Eklenti projelerinde diğer görevleri gerçekleştirmek için sınıfını kullanın. Daha fazla bilgi için bkz . PROGRAM VSTO Eklentileri.VSTO Eklentisinde özel görev bölmesi oluşturun. Daha fazla bilgi için bkz . Özel görev bölmeleri ve Nasıl yapılır: Uygulamaya özel görev bölmesi ekleme.
VSTO Eklentisindeki şeridi özelleştirin. Daha fazla bilgi için bkz . Şeride genel bakış ve Nasıl yapılır: Şeridi özelleştirmeye başlama.