İ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

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

  1. Proje menüsünde Sınıf Ekle'ye tıklayın.

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

  3. Aşağıdaki yönergeleri dosyanın en üstüne ekleyin.

    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. 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 ekler ImportData . IDispatch arabirimini AddInUtilities 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

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

  2. ThisAddIn.cs veya ThisAddIn.vb dosyasına sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.

  3. Aşağıdaki kodu ThisAddIn sınıfına ekleyin.

    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. 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

  1. Projenizi çalıştırmak için F5 tuşuna basın.

  2. Excel'de, etkin çalışma kitabını Excel Makro Etkin Çalışma Kitabı (*.xlsm) olarak kaydedin. Masaüstü gibi uygun bir konuma kaydedin.

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

  4. Kod grubunda Visual Basic'e tıklayın.

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

  5. Proje penceresinde Bu Çalışma Kitabı'na çift tıklayın.

    Nesnenin ThisWorkbook kod dosyası açılır.

  6. 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
    
  7. F5 tuşuna basın.

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

  9. Excel'de çıkın.

Sonraki adımlar

VSTO Eklentilerini programlama hakkında daha fazla bilgiyi şu konulardan öğrenebilirsiniz: