Ö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ı
-
İ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.
-
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 -
Metin dosyasını C:\KbTest.bas dizinine kaydedin ve dosyayı kapatın.
-
Proje Visual Basic ve standart bir proje oluşturun. Form1 varsayılan olarak oluşturulur.
-
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.
-
-
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 -
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.
-
-
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: