Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

Özet

Visual Basic'Office bir Office ürününü otomatik haline gönderirken, kodun bir kısmını sunucunun işlem alanı içinde çalıştıracak bir Microsoft Visual Basic for Applications (VBA) modülüne taşımak yararlı olabilir. Bu, uygulamanız için genel yürütme hızını artırır ve sunucu yalnızca bir arama işlemi devam ediyorsa bir eylemi taşıdığında sorunları çözmenize yardımcı olabilir.

Bu makalede, Visual Basic'tan çalışan bir Office uygulamasına VBA modülünün dinamik olarak nasıl ekleneceğini ve sonra bir çalışma sayfası devam ediyor gibi doldurulacak şekilde makronun nasıl çağırılacağını gösterir.

Ek Bilgi

Aşağıdaki örnekte, Microsoft Excel'e bir kod modülü ekleme göstermekle birlikte, aynı VBA altyapısını bir PowerPoint Word ve PowerPoint için de aynı tekniği kullanabilirsiniz.

Örnek, posta kutusuna eklenen kod modülü için statik metin dosyası Excel. Kodu uygulamanıza derleyebilecek bir kaynak dosyasına taşımayı düşünebilirsiniz ve sonra çalışma zamanında gerektiğinde bu kodu geçici bir dosyaya ayıklarsanız. Bu da projenin yeniden dağıtım için daha yönetilebilir hale gelir.

MICROSOFT OFFICE XP Microsoft Office den başlayarak, kullanıcının VBA'yı işlemek için yazılan herhangi bir Otomasyon kodu çalışmadan önce VBA nesne modeline erişim iznine sahip olması gerekir. Bu, XP ile birlikte gelen yeni bir Office özelliğidir. Daha fazla bilgi için lütfen aşağıdaki Bilgi bankası makalesine bakın:

282830 XP VBA Office Programlı Erişim Project Reddedildi

Örneği oluşturma adımları

  1. İlk olarak KbTest.bas adlı yeni bir metin dosyası oluşturun (dosya .txt oluşturun. Bu, çalışma zamanında bu modüle ekley Excel modüldür.

  2. Metin dosyasına aşağıdaki kod satırlarını ekleyin:

       Attribute VB_Name = "KbTest"

    ' Your Microsoft Visual Basic for Applications macro function takes 1
    ' parameter, the sheet object that you are going to fill.

    Public Sub DoKbTest(oSheetToFill As Object)
    Dim i As Integer, j As Integer
    Dim sMsg As String
    For i = 1 To 100
    For j = 1 To 10

    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheetToFill.Cells(i, j).Value = sMsg
    Next j
    Next i
    End Sub
  3. Metin dosyasını C:\KbTest.bas dizinine kaydedin ve dosyayı kapatın.

  4. Proje Visual Basic ve standart bir proje oluşturun. Form1 varsayılan olarak oluşturulur.

  5. Sayfa Project, Başvurular'a tıklayın ve sonra da kitaplık türü için erken bağlamayı kullanmana olanak sağlayan uygun Excel.

    Örneğin, aşağıdaki seçeneklerden birini seçin:

    • Daha Microsoft Office Excel 2007 için 12.0 kitaplığını seçin.

    • Daha Microsoft Office Excel 2003 için 11,0 kitaplığını seçin.

    • Daha Microsoft Excel 2002 için 10,0 kitaplığını seçin.

    • Daha Microsoft Excel 2000 için 9,0 kitaplığını seçin.

    • 97 Microsoft Excel 8,0 kitaplığını seçin.

  6. Form1'e bir düğme ekleyin ve düğmenin Click olayı için işleyiciye aşağıdaki kodu ekleyin:

       Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim i As Integer, j As Integer
    Dim sMsg As String

    ' Create a new instance of Excel and make it visible.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Add a new workbook and set a reference to Sheet1.
    Set oBook = oXL.Workbooks.Add
    Set oSheet = oBook.Sheets(1)

    ' Demo standard Automation from out-of-process,
    ' this routine simply fills in values of cells.
    sMsg = "Fill the sheet from out-of-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    For i = 1 To 100
    For j = 1 To 10
    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheet.Cells(i, j).Value = sMsg
    Next j
    Next i

    ' You're done with the first test, now switch sheets
    ' and run the same routine via an inserted Microsoft Visual Basic
    ' for Applications macro.
    MsgBox "Done.", vbMsgBoxSetForeground
    Set oSheet = oBook.Sheets.Add
    oSheet.Activate

    sMsg = "Fill the sheet from in-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    ' The Import method lets you add modules to VBA at
    ' run time. Change the file path to match the location
    ' of the text file you created in step 3.
    oXL.VBE.ActiveVBProject.VBComponents.Import "C:\KbTest.bas"

    ' Now run the macro, passing oSheet as the first parameter
    oXL.Run "DoKbTest", oSheet

    ' You're done with the second test
    MsgBox "Done.", vbMsgBoxSetForeground

    ' Turn instance of Excel over to end user and release
    ' any outstanding object references.
    oXL.UserControl = True
    Set oSheet = Nothing
    Set oBook = Nothing
    Set oXL = Nothing

    End Sub
  7. VBA Excel 2002 ve sonraki Excel için VBA projesine erişimi açabilirsiniz. Bunu yapmak için aşağıdaki yöntemlerden birini kullanın:

    • Yeni Excel 2007'de, Seçenekler Microsoft Office e tıklayın ve sonra da Seçenekler'Excel tıklayın. Güven Merkezi'ne ve ardından Güven Merkezi Güven Merkezi Güven Merkezi'ne Ayarlar. Makro Modeli Ayarlar ne tıklayın, VBA proje nesnesi modeline güven onay kutusunu seçmek için tıklayın ve ardından iki kez Tamam'a tıklayın.

    • Excel 2003'te ve Excel'nin önceki sürümlerinde, Araçlar menüsünde Makro üzerine gelin ve Güvenlik'e tıklayın. Güvenlik iletişim kutusunda Güvenilen Kaynaklar sekmesine tıklayın ve sonra da Güvenilir Kaynaklar sekmesine güven onay Visual Basic Project tıklayın.

  8. Proje Visual Basic çalıştırın.

Başvurular

2013'Office otomasyonu Visual Basic fazla bilgi için lütfen aşağıdaki adreste bulunan Office Geliştirme Desteği sitesine bakın:

http://support.microsoft.com/ofd

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?
Gönder’e bastığınızda, geri bildiriminiz Microsoft ürün ve hizmetlerini geliştirmek için kullanılır. BT yöneticiniz bu verileri toplayabilecek. Gizlilik Bildirimi.

Geri bildiriminiz için teşekkürler!

×