Aracılığıyla paylaş


İ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:

video bağlantısı 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

  1. Proje menüsünde, Sınıf ekle'yi tıklatın.

  2. 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.

  3. 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;
    
  4. 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

  1. Çözüm Gezgini'nde Excel'i genişletin.

  2. ThisAddIn.cs ya da ThisAddIn.vb'ye sağ tıklayın ve Kodu Görüntüle'ye tıklayın.

  3. 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;
    }
    
  4. 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

  1. F5 tuşuna basarak projeyi çalıştırın.

  2. 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.

  3. Ş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.

  4. Kod grubunda Visual Basic'i tıklatın.

    Visual Basic Düzenleyicisi açılır.

  5. Proje penceresinde, ThisWorkbook'u çift tıklatın.

    ThisWorkbook nesnesi için kod dosyası açılır.

  6. 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
    
  7. F5'e basın.

  8. 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.

  9. Excel'den çıkın.

Sonraki Adımlar

Eklenti programlama hakkında daha fazla bilgiyi bu konulardan öğrenebilirsiniz:

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

Diğer Kaynaklar

Uygulama Düzeyi Eklentileri Programlama

Office Çözümleri Geliştirme