İzlenecek Yol: Uygulama Düzeyi Eklentide VBA'dan Kod Çağırma
Bu izlenecek yolda uygulama düzeyi eklentisindeki bir nesnenin, Uygulamalar için Visual Basic (VBA) ve COM eklentileri dahil olmak üzere diğer Microsoft Office çözümleri tarafından nasıl ulaşıldığı gösterilir.
Uygulama hedefi: Bu konudaki bilgiler, Microsoft Office 2013 ve Microsoft Office 2010 için uygulama düzeyi projelere yöneliktir. Daha fazla bilgi edinmek için, bkz. Office Uygulaması ve Proje Türüne Göre Kullanılabilir Özellikler.
Bu yol özellikle Excel kullanıyor olsa da, izlenecek yol tarafından gösterilen kavramlar Visual Studio tarafından sağlanan herhangi bir eklenti proje şablonuna uygulanabilir.
Bu örneklerde aşağıdaki görevler gösterilir:
Diğer Office çözümlerini ortaya çıkarabilen bir sınıf tanımlama.
Diğer Office çözümlerine sınıfı ulaşabilir hale getirme.
VBA kodundan sınıfın bir 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. Visual Studio'da Geliştirme Ayarlarını özelleştirme.
Önkoşullar
Bu örneği tamamlamak için aşağıdaki bileşenler gerekmektedir:
Microsoft Office geliştirici araçlarını içeren bir Visual Studio 2013 sürümü. Daha fazla bilgi edinmek için, bkz. Office Çözümleri Geliştirmek İçin Bilgisayarı Yapılandırma.
Excel 2013 veya Excel 2010.
Bu konunun videosu için bkz: Video nasıl: içinde bir uygulama düzeyi eklentisi VBA'dan Kod Çağırma.
Eklenti Projesi Oluşturma
İlk adım, Excel için bir eklenti projesi oluşturamaktır.
Yeni bir proje oluşturmak için
Excel Eklenti projesi şablonunu kullanarak, ExcelImportData isimli bir Excel Eklenti 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 ya da ThisAddIn.vb kod dosyasını açar ve ExcelImportData projesini Çözüm Gezgini'ne ekler.
Diğer Office Çözümlerinden Ulaşabileceğiniz Bir Sınıf Tanımlama
Bu izlenecek yolun amacı, eklentinizdeki VBA konundan AddInUtilities isimli sınıfın ImportData yöntemini çağırmaktır.Bu yöntem, etkin çalışma sayfasının A1 hücresine bir dize yazar.
AddInUtilities sınıfını diğer Office çözümlerine ulaşılabilir yapmak için, sınıfı ortak ve COM'e görünebilir yapın.Ayrıca IDispatch sınıfını da ulaşılabilir yapmalısınız.Aşağıdaki yordam içindeki kodda, bu gereksinimleri sağlamanın bir yolu gösterilir.Daha fazla bilgi için bkz. Uygulama Düzeyi Eklentilerinde Diğer Office Çözümlerinden Kod Çağırma.
Diğer Office çözümlerininden ulaşabileceğiniz bir sınıf tanımlamak
Proje menüsünde, Sınıf ekle'yi tıklatın.
Yeni Öğe Ekle iletişim kutusunda, yeni sınıfın adını AddInUtilities olarak değiştirin ve Ekle'yi tıklatın.
AddInUtilities.cs veya AddInUtilities.vb dosyası Kod Düzenleyicide açılır.
Dosyanın en üstüne, aşağıdaki ifadeleri ekleyin.
Imports System.Data Imports System.Runtime.InteropServices Imports Excel = Microsoft.Office.Interop.Excel
using System.Data; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel;
Yerine AddInUtilities sınıfı ile aşağıdaki kodu.
<ComVisible(True)> _ Public Interface IAddInUtilities Sub ImportData() End Interface <ComVisible(True)> _ <ClassInterface(ClassInterfaceType.None)> _ Public Class AddInUtilities Implements IAddInUtilities ' This method tries to write a string to cell A1 in the active worksheet. Public Sub ImportData() Implements IAddInUtilities.ImportData Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet If activeWorksheet IsNot Nothing Then Dim range1 As Excel.Range = activeWorksheet.Range("A1") range1.Value2 = "This is my data" End If End Sub End Class
[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 AddInUtilities sınıfını COM'e görünür yapar ve ImportData yöntemini sınıfa ekler.IDispatch arayüzünü oluşturmak için, AddInUtilities sınıfı da ClassInterfaceAttribute özniteliğine sahiptir ve COM'e görünür olan bir arayüz gerçekleştirir.
Diğer Office Çözümlerine Sınıfı Ulaşılabilir Yapma.
AddInUtilities sınıfını diğer Office çözümlerine ulaşılabilir yapmak için, ThisAddIn sınıfındaki RequestComAddInAutomationService yöntemini geçersiz kılın.Geçersiz kılmada, AddInUtilities sınıfının bir örneğini döndürün.
Diğer Office çözümlerine AddInUtilities sınıfı ulaşılabilir yapmak
Çözüm Gezgini'nde Excel'i genişletin.
ThisAddIn.cs ya da ThisAddIn.vb'ye sağ tıklayın ve Kodu Görüntüle'ye tıklayın.
Aşağıdaki kodu ThisAddIn sınıfına ekleyin.
Private utilities As AddInUtilities Protected Overrides Function RequestComAddInAutomationService() As Object If utilities Is Nothing Then utilities = New AddInUtilities() End If Return utilities End Function
private AddInUtilities utilities; protected override object RequestComAddInAutomationService() { if (utilities == null) utilities = new AddInUtilities(); return utilities; }
Yapı menüsünde, Çözümü Derle'yi tıklatın.
Çözümünüzün hatasız oluşturulduğunu doğrulayın.
Eklentiyi Test Etme
Office çözümlerinin farklı türlerinden AddInUtilities sınıfını çağırabilirsiniz.Bu izlenecek yolda, Excel çalışma kitabındaki VBA kodunu kullanacaksınız.Kullanabileceğiniz Office çözümlerinin diğer türleri hakkında daha fazla bilgi için bkz. Uygulama Düzeyi Eklentilerinde Diğer Office Çözümlerinden Kod Çağırma.
Eklentiyi sınamak için
F5 tuşuna basarak projeyi çalıştırın.
Excel'de etkin çalışma kitabını Excel Makro Etkin Çalışma Kitabı (*.xlsm) olarak kaydedin.Onu, masaüstü gibi kullanışlı bir konuma kaydedin.
Şerit'te Developer (Geliştirici) sekmesine tıklatın.
[!NOT]
Geliştirici sekmesi görünür değilse önce onu görünür yapın.Daha fazla bilgi için bkz. Nasıl Yapılır: Şeritte Geliştirici Sekmesini Gösterme.
Kod grubunda Visual Basic'i tıklatın.
Visual Basic Düzenleyicisi açılır.
Proje penceresinde, ThisWorkbook'u çift tıklatın.
ThisWorkbook nesnesi için kod dosyası açılır.
Aşağıdaki VBA kodunu kod dosyasına ekleyin.Kod, ilk önce ExcelImportData eklentisini temsil eden COMAddIn nesnesini alır.Kod, daha sonra ImportData yöntemini çağırmak için COMAddIn nesnesinin 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'e basın.
Imported Data sayfasının çalışma kitabına eklendiğini doğrulayın.Ayrıca, A1 hücresinin This is my data dizesini içerdiğini de doğrulayın.
Excel'den çıkın.
Sonraki Adımlar
Eklenti programlama hakkında daha fazla bilgiyi bu konulardan öğrenebilirsiniz:
Konak uygulamasını otomatikleştirmek ve eklenti projesindeki diğer görevleri gerçekleştirmek için ThisAddIn sınıfını kullanın.Daha fazla bilgi için bkz. Uygulama Düzeyi Eklentileri Programlama.
Eklentide ö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.
Eklentideki Şerit'i Özelleştirme.Daha fazla bilgi için, bkz. Şerite Genel Bakış ve Nasıl Yapılır: Şerit Özelleştirmeye Başlama.
Ayrıca bkz.
Görevler
Nasıl Yapılır: Visual Studio'da Office Projeleri Oluşturma
Kavramlar
Uygulama Düzeyi Eklentilerinde Diğer Office Çözümlerinden Kod Çağırma
Uygulama Düzeyi Eklentileri Mimarisi
Genişletilebilirlik Arabirimlerini Kullanarak Kullanıcı Arabirimi Özelliklerini Özelleştirme