Aracılığıyla paylaş


İzlenecek yol: Visual Basic projesinde VBA'dan kod çağırma

Bu kılavuz, belgedeki Visual Basic for Applications (VBA) kodundan Microsoft Office Word için belge düzeyinde özelleştirmede bir yöntemin nasıl çağrılacağını gösterir. Yordam üç temel adımdan oluşur: konak öğesi sınıfına ThisDocument bir yöntem ekleyin, yöntemi VBA kodunda kullanıma sunun ve ardından belgedeki VBA kodundan yöntemini çağırın.

Şunlar için geçerlidir: Bu konudaki bilgiler Excel ve Word için belge düzeyi 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 Word'i kullansa da, izlenecek yol tarafından ortaya konan kavramlar Excel için belge düzeyi projeleri için de geçerlidir.

Bu izlenecek yol aşağıdaki görevleri gösterir:

  • VBA kodu içeren bir belge oluşturma.

  • Word'de Güven Merkezi'ni kullanarak belgenin konumuna güvenme.

  • Konak öğesi sınıfına ThisDocument bir yöntem ekleme.

  • yöntemini VBA koduna ifşa etme.

  • VBA kodundan 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 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 Word

VBA kodu içeren bir belge oluşturma

İlk adım, basit bir VBA makrosunun bulunduğu makro içerebilen bir belge oluşturmaktır. Bu belgeyi temel alan bir Visual Studio projesi oluşturmadan önce belge bir VBA projesi içermelidir. Aksi takdirde Visual Studio, VBA kodunun özelleştirme derlemesine çağrı yapmasını sağlamak için VBA projesini değiştiremez.

Kullanmak istediğiniz VBA kodunu içeren bir belgeniz zaten varsa, bu adımı atlayabilirsiniz.

VBA kodu içeren bir belge oluşturmak için

  1. Word'i başlatın.

  2. Etkin belgeyi, DocumentWithVBA adıyla Makro Etkinleştirilmiş Word Belgesi (*.docm) 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 ThisDocument'a çift tıklayın.

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

  6. Kod dosyasına aşağıdaki VBA kodunu ekleyin. Bu kod hiçbir şey yapmaz basit bir işlev tanımlar. Bu işlevin tek amacı belgede bir VBA projesinin bulunduğundan emin olmaktır. Bu, bu kılavuzdaki sonraki adımlar için gereklidir.

    Sub EmptySub()
    End Sub
    
  7. Belgeyi kaydedin ve Word'dan çıkın.

Proje oluşturma

Artık Word için daha önce oluşturduğunuz makro etkinleştirilmiş belgeyi kullanan bir belge düzeyi projesi oluşturabilirsiniz.

Yeni proje oluşturmak için

  1. Visual Studio’yu çalıştırın.

  2. Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın. IDE'niz Visual Basic geliştirme ayarlarını kullanacak şekilde ayarlandıysa, Dosya menüsünde Yeni Proje'ye tıklayın.

  3. Şablonlar bölmesinde Visual Basic'i ve ardından Office/SharePoint'i genişletin.

  4. Office Eklentileri düğümünü seçin.

  5. Proje şablonları listesinde Word 2010 Belgesi veya Word 2013 Belge projesini seçin.

  6. Ad kutusuna CallingCodeFromVBA yazın.

  7. Tamam'a tıklayın.

    Office Proje sihirbazı için Visual Studio Araçları açılır.

  8. Var olan bir belgeyi kopyala'yı seçin ve Var olan belgenin Tam yolu kutusunda, daha önce oluşturduğunuz DocumentWithVBA belgesinin konumunu belirtin. Makro etkinleştirilmiş kendi belgenizi kullanıyorsanız, bunun yerine bu belgenin konumunu belirtin.

  9. Finish (Son) düğmesine tıklayın.

    Visual Studio, DocumentWithVBA belgesini tasarımcıda açar ve CallingCodeFromVBA projesini Çözüm Gezgini ekler.

Belgenin konumuna güvenme

Çözümünüzdeki kodu belgedeki VBA koduyla kullanıma sunmadan önce, belgedeki VBA'ya güvenmeniz gerekir. Bunu yapmanın birkaç yolu vardır. Bu izlenecek yol için, Word'deki Güven Merkezi'nde belgenin konumuna güvenin.

Belgenin konumuna güvenmek için

  1. Word'i başlatın.

  2. Dosya sekmesine tıklayın.

  3. Word Seçenekleri düğmesine tıklayın.

  4. Kategoriler bölmesinde Güven Merkezi'ne tıklayın.

  5. Ayrıntılar bölmesinde Güven Merkezi Ayarlar'ne tıklayın.

  6. Kategoriler bölmesinde Güvenilen Konumlar'a tıklayın.

  7. Ayrıntılar bölmesinde Yeni konum ekle'ye tıklayın.

  8. Microsoft Office Güvenilen Konumu iletişim kutusunda, CallingCodeFromVBA projesini içeren klasöre göz atın.

  9. Bu konumun alt klasörleri de güvenilir'i seçin.

  10. Microsoft Office Güvenilen Konum iletişim kutusunda Tamam'a tıklayın.

  11. Güven Merkezi iletişim kutusunda Tamam'a tıklayın.

  12. Word Seçenekleri iletişim kutusunda Tamam'a tıklayın.

  13. Word'de çıkın.

ThisDocument sınıfına yöntem ekleme

VBA projesi ayarlandığından, VBA kodundan çağırabileceğiniz konak öğesi sınıfına bir yöntem ThisDocument ekleyin.

ThisDocument sınıfına yöntem eklemek için

  1. Çözüm Gezgini'da ThisDocument.vb'ye sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.

    ThisDocument.vb dosyası Kod Düzenleyicisi'nde açılır.

  2. Sınıfına aşağıdaki yöntemi ThisDocument ekleyin. Bu yöntem, belgenin başında iki satır ve iki sütun içeren bir tablo oluşturur. Parametreler, ilk satırda görüntülenen metni belirtir. Bu kılavuzun ilerleyen bölümlerinde, belgedeki VBA kodundan bu yöntemi çağıracaksınız.

    Public Sub CreateTable(ByVal firstColumnHeader As String, _
        ByVal secondColumnHeader As String)
    
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2)
    
        With table1
            .Style = "Table Professional"
            .Cell(1, 1).Range.Text = firstColumnHeader
            .Cell(1, 2).Range.Text = secondColumnHeader
        End With
    End Sub
    
  3. Projeyi derleyin.

yöntemini VBA kodunda kullanıma sunma

Yöntemini belgedeki CreateTable VBA koduna göstermek için ThisDocument konak öğesinin EnableVbaCallers özelliğini True olarak ayarlayın.

Yöntemini VBA kodunda kullanıma sunma

  1. Çözüm Gezgini'de, ThisDocument.vb'ye çift tıklayın.

    DocumentWithVBA dosyası tasarımcıda açılır.

  2. Özellikler penceresinde EnableVbaCallers özelliğini seçin ve değeri True olarak değiştirin.

  3. Görüntülenen iletide Tamam'a tıklayın.

  4. Projeyi derleyin.

VBA kodundan yöntemini çağırma

Artık belgedeki CreateTable VBA kodundan yöntemini çağırabilirsiniz.

Not

Bu kılavuzda, projede hata ayıklarken belgeye VBA kodu ekleyebilirsiniz. Visual Studio, derleme çıktı klasöründeki belgeyi ana proje klasöründeki belgenin bir kopyasıyla değiştirdiğinden, projeyi bir sonraki derlemenizde bu belgeye eklediğiniz VBA kodunun üzerine yazılır. VBA kodunu kaydetmek istiyorsanız, bunu proje klasöründeki belgeye kopyalayabilirsiniz. Daha fazla bilgi için bkz . VBA ve belge düzeyi özelleştirmelerini birleştirme.

VBA kodundan yöntemini çağırmak için

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

  2. Geliştirici sekmesinin Kod grubunda Visual Basic'e tıklayın.

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

  3. Ekle menüsünde Modül'e tıklayın.

  4. Aşağıdaki kodu yeni modüle ekleyin.

    Bu kod, özelleştirme derlemesindeki yöntemini çağırır CreateTable . Makro, nesnesinin özelliğini kullanarak bu yönteme CallVSTOAssembly erişir ThisDocument . Bu kılavuzun önceki bölümlerinde EnableVbaCallers özelliğini ayarladığınızda bu özellik otomatik olarak oluşturulmuştur.

    Sub CreateTable()
        Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date")
    End Sub
    
  5. F5 tuşuna basın.

  6. Belgeye yeni bir tablo eklendiğini doğrulayın.

  7. Değişikliklerinizi kaydetmeden Word'de çıkın.

Sonraki adımlar

VbA'dan Office çözümlerinde kod çağırma hakkında daha fazla bilgiyi şu konularda bulabilirsiniz:

  • VBA'dan Visual C# özelleştirmesinde kodu çağırın. Bu işlem Visual Basic işleminden farklıdır. Daha fazla bilgi için bkz . İzlenecek yol: Visual C# projesinde VBA'dan kod çağırma.

  • VBA'dan bir VSTO Eklentisindeki kodu çağırma. Daha fazla bilgi için bkz . İzlenecek yol: VBA'dan VSTO Eklentisinde kod çağırma.