Aracılığıyla paylaş


Nasıl yapılır: Visual Basic projesindeki vba koduna açığa çıkaran

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

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

Visual Basic işlemi, Visual C# işleminden farklıdır.Daha fazla bilgi için bkz. Nasıl yapılır: Visual C# projesi, vba kodu göstermek.

İşlem, konak öğesi sınıf kodu için diğer sınıf kodları için olduğundan farklıdır:

  • Konak öğesi sınıf kodunu ortaya çıkarma

  • Konak öğesi sınıfı olmayan kodu ortaya çıkarma

video bağlantısı İlgili video gösterimi için bkz: nasıl yapmak ı: çağrı vsto Kodu VBA'den?.

Konak Öğesi Sınıf Kodunu Ortaya Çıkarma

VBA kodunun, konak öğesi sınıfındaki Visual Basic kodunu çağırmasını etkinleştirmek için konak öğesinin EnableVbaCallers özelliğini True olarak ayarlayın.

Konak öğesi sınıf yöntemini nasıl ortya çıkaracağını ve sonra VBA'den çağıracağınızı gösteren yönerge için, bkz. İzlenecek yol: Visual Basic projesindeki vba kodu arama.Konak öğeleri hakkında daha fazla bilgi için, bkz. Konak Öğeleri ve Konak Kontrollerine Genel Bakış.

Konak öğesi sınıf kodunu VBA'de ortaya çıkarmak için

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

    Makroları destekleyen belge dosyası biçimleri hakkında daha fazla bilgi için, bkz. VBA ve Belge Düzeyi Özelleştirmelerini Birleştirme.

    [!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 özellik, yöntem veya olayı projenizdeki konak öğe sınıflarından birine ekleyin ve yeni öğeyi Public olarak bildirin.Sınıfın adı uygulamaya göre değişir:

    • Word projesinde konak öğesi sınıfı varsayılan olarak ThisDocument şeklinde adlandırılır.

    • Excel projesinde konak öğesi sınıfı varsayılan olarak ThisWorkbook, Sheet1, Sheet2 ve Sheet3 şeklinde adlandırılır.

  4. Konak öğesinin EnableVbaCallers özelliğini True olarak ayarlayın.Bu özelliğe, konak öğesi tasarımcıda açık olduğu zaman Özellikler penceresinden ulaşılabilir.

    Bu özelliği ayarladıktan sonra Visual Studio otomatik olarak ReferenceAssemblyFromVbaProject özelliğini True yapar.

    [!NOT]

    Çalışma kitabı veya belge hali hazırda VBA kodu içermiyorsa veya belgedeki VBA kodu çalıştırmak için güvenilir değil ise EnableVbaCallers ö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.

  5. 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 CallVSTOAssembly isimli özelliği ThisDocument, ThisWorkbook, Sheet1, Sheet2'ya veya Sheet3 VBA projesi modülüne ekler. Bu özelliği VBA'de ortaya çıkardığınız sınıfın ortak üyelerine erişmek için kullanabilirsiniz.

  6. Projeyi yapılandırın.

Konak Öğesi Sınıfı Olmayan Kodu Ortaya Çıkarma

VBA kodunun konak öğesi sınıfında olmayan Visual Basic kodunu çağırmasını etkinleştirmek için kodu VBA'ye görünür olacak şekilde değiştirin.

Konak öğesi sınıfı olmayan kodu VBA'de ortaya çıkarmak için

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

    Makroları destekleyen belge dosyası biçimleri hakkında daha fazla bilgi için, bkz. VBA ve Belge Düzeyi Özelleştirmelerini Birleştirme.

    [!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 ComClassAttribute özniteliklerini VBA'de ortaya çıkardığınız sınıfa uygulayın.Bu öznitelikler sınıfı VBA'de görünür kılar.

    <Microsoft.VisualBasic.ComClass()> _
    <System.Runtime.InteropServices.ComVisibleAttribute(True)> _
    
  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.Aşağıdaki kod örneği DocumentUtilities isimli sınıfı VBA'de ortaya çıkardığınızı varsayar.

    Protected Overrides Function GetAutomationObject() As Object
        Return New DocumentUtilities()
    End Function
    
  6. Visual Studio belge (Word için) veya çalışma sayfası (Excel için) tasarımcısını açın.

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

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

  9. Projeyi yapılandırın.

Ayrıca bkz.

Görevler

Nasıl yapılır: Visual Studio Office projeler oluşturmak

İzlenecek yol: Visual Basic projesindeki vba kodu arama

Nasıl yapılır: Visual C# projesi, vba kodu göstermek

Diğer Kaynaklar

Office Çözümleri Tasarlama ve Oluşturma

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