Aracılığıyla paylaş


Nasıl Yapılır: Visual C# Projesinde Kodu VBA'da Ortaya Çıkarmak

İki kod türünün birbiri ile etkileşimde bulunmasını istiyorsanız, Visual C# projesindeki kodu Visual Basic for Applications (VBA) kodunda ortaya çıkarabilirsiniz.

Visual C# işlemi, Visual Basic işleminden farklıdır. Daha fazla bilgi için bkz. Belge Düzeyi Özelleştirmelerindeki Kodu VBA'dan Çağırma ve Nasıl Yapılır: Visual Basic Projesindeki Kodu VBA'de Ortaya Çıkarma.

Uygulama alanı: Bu konudaki bilgiler şu uygulamaların belge düzeyi projelerine yöneliktir: Excel 2007 ve Excel 2010; Word 2007 ve Word 2010. Daha fazla bilgi için bkz. Office Uygulamalarında Kullanılabilir Özellikler ve Proje Türü.

Visual C# Projesinde Kodu VBA'da Ortaya Çıkarma

VBA kodunu Visual C# projesinde kod çağırmak amacıyla etkinleştirmek için, kodu değiştirin, böylelikle COM'e görünür olur ve sonra tasarımcıda ReferenceAssemblyFromVbaProject özelliğini True'ya ayarlayın.

Visual C# projesinde VBA'den yöntemin nasıl çağırılacağını gösteren yönerge için, bkz. İzlenecek Yol: Visual C# Projesinde VBA'dan Kod Çağırma.

Visual C# projesinde Kkdu VBA'da ortada çıkarmak için

  1. Makroları destekleyen ve hali hazırda VBA kodu içeren Word belgesi, Excel çalışma kitabı veya Excel şablon tabanlı belge düzeyi projesi açın veya oluşturun.

    Makroları destekleyen belge dosyası biçimleri hakkında daha fazla bilgi için, bkz. Belge Düzeyi Özelleştirmelerindeki Kodu VBA'dan Çağırma.

    Not

    Bu özellik Word şablon projelerinde kullanılamaz.

  2. Belgedeki VBA kodunun, kullanıcı makroları etkinleştirmeyi istemeden çalışmasına izin verildiğine emin olun. Office projesinin konumunu Word veya Excel Güven Merkezi'ndeki güvenilir konum listesine ekleyerek VBA kodunun çalışacağına güvenebilirsiniz.

  3. VBA'de ortaya çıkarmak istediğiniz üyeyi projenizdeki bir ortak sınıfa ekleyin ve yeni üyeyi public olarak bildirin.

  4. Aşağıdaki ComVisibleAttribute ve ClassInterfaceAttribute özniteliklerini VBA'de ortaya çıkardığınız sınıfa uygulayın. Bu öznitelikler sınıfı COM'e görünür kılar, fakat bir sınıf arayüzü yaratmaz.

    [System.Runtime.InteropServices.ComVisible(true)]
    [System.Runtime.InteropServices.ClassInterface(
        System.Runtime.InteropServices.ClassInterfaceType.None)]
    
  5. VBA'de ortaya çıkardığınız sınıfın bir örneğini dönmek için projenizdeki konak öğesi sınıfının GetAutomationObject yöntemini geçersiz kılın:

    • Eğer konak öğesi sınıfını VBA'de ortaya çıkarıyorsanız, bu sınıfa ait olan GetAutomationObject yöntemini geçersiz kılın ve sınıfın geçerli örneğini döndürün.

      protected override object GetAutomationObject()
      {
          return this;
      }
      
    • Eğer konak öğesi olmayan bir sınıfı VBA'de ortaya çıkarıyorsanız, projenizdeki herhangi bir konak öğesinin GetAutomationObject yöntemini geçersiz kılın ve konak öğesi olmayan sınıfın bir örneğine dönün. Örneğin, aşağıdaki kod örneği DocumentUtilities isimli sınıfı VBA'de ortaya çıkardığınızı varsayar.

      protected override object GetAutomationObject()
      {
          return new DocumentUtilities();
      }
      

    Konak öğeleri hakkında daha fazla bilgi için, bkz. Konak Öğeleri ve Konak Kontrollerine Genel Bakış.

  6. VBA'de ortaya çıkardığınız sınıftan bir arayüz çıkarın. Arayüz Çıkart iletişim kutusunda, arayüz bildirimine eklemek istediğiniz ortak üyeleri seçin. Daha fazla bilgi için bkz. Çıkarma Arabirimi Yeniden Düzenleme (C#).

  7. Arayüz bildirimine public anahtar sözcüğünü ekleyin.

  8. Aşağıdaki ComVisibleAttribute özniteliğini arayüze ekleyerek, arayüzü COM'e görünür kılın.

    [System.Runtime.InteropServices.ComVisible(true)]
    
  9. Visual Studio içindeki tasarımcıdan belge (Word için) veya çalışma sayfası (Excel için) açın.

  10. Özellikler penceresinde, ReferenceAssemblyFromVbaProject özelliğini seçin ve değerini True olarak değiştirin.

    Not

    Çalışma kitabı veya belge önceden VBA kodu içermiyorsa veya belgedeki VBA kodu çalıştırmak için güvenilir değil ise ReferenceAssemblyFromVbaProject özelliğini True olarak ayarladığınızda hata iletisi alırsınız. Bunun sebebi Visual Studio'nun bu durumda belgedeki VBA projesini değiştirememesidir.

  11. Görüntülenen iletide Tamam'ı tıklayın. Bu ileti, VBA kodunu çalışma kitabına veya belgeye projeyi Visual Studio'dan çalıştırırken eklerseniz, VBA kodunun bir sonraki proje yapılandırmasında kaybolacağını hatırlatır. Bunun sebebi, belgenin yapı çıktı klasörünün projeyi her yapılandırmanızda yeniden oluşturulmasıdır.

    Bu noktada Visual Studio, projeyi VBA projesini derleyicide çağırabilecek şekilde yapılandırır. Visual Studio aynı zamanda GetManagedClass isimli yöntemi VBA projesine ekler. Bu yöntemi VBA projesinde herhangi bir yerden VBA'de ortaya çıkardığınız sınıfa erişmek için çağırabilirsiniz. Daha fazla bilgi için bkz. Belge Düzeyi Özelleştirmelerindeki Kodu VBA'dan Çağırma.

  12. Projeyi yapılandırın.

Ayrıca bkz.

Görevler

Nasıl Yapılır: Visual Studio'da Office Projeleri Oluşturma

İzlenecek Yol: Visual C# Projesinde VBA'dan Kod Çağırma

Nasıl Yapılır: Visual Basic Projesindeki Kodu VBA'de Ortaya Çıkarma

Kavramlar

Belge Düzeyi Özelleştirmelerindeki Kodu VBA'dan Çağırma

Diğer Kaynaklar

Office Çözümleri Tasarlama ve Oluşturma

VBA ve Belge Düzeyi Özelleştirmelerini Birleştirme