Kokkuvõte
Office-Visual Basic automaatsel käivitamisel võib olla kasulik teisaldada osa koodist Microsoft Visual Basic for Applicationsi (VBA) moodulisse, mida saab käitada serveri protsessiruumis. See võib suurendada rakenduse üldist käivitamiskiirust ja leevendada probleeme, kui server sooritab toimingu ainult siis, kui kõne tehakse protsessi käigus.
Selles artiklis kirjeldatakse, kuidas dünaamiliselt lisada VBA-moodulit Office rakendusele Visual Basic ja seejärel helistada makrole, et täita töölehe protsess.
Lisateave
Järgmine näide näitab koodimooduli sisestamist Microsoft Excel, kuid wordis ja wordis saate kasutada sama PowerPoint kuna mõlemad sisaldavad sama VBA-mootorit.
Näidis kasutab koodimooduli jaoks staatilist tekstifaili, mis lisatakse Excel. Võiksite kaaluda koodi teisaldamist ressursifaili, mille saate oma rakendusse kompileerida, ja seejärel ekstraktida ajutiseks failiks, kui seda on vaja käitusaja jooksul. See muudaks projekti taasjaotuse jaoks hallatavamaks.
Alates Microsoft Office XP-st peab kasutaja vba-objektimudelile juurdepääsu andma, enne kui VBA-ga manipuleerimiseks kirjutatud automatiseerimiskood töötab. See on uus turbefunktsioon, mis Office XP-ga. Lisateabe saamiseks lugege järgmist teabebaasi artiklit:
282830 Programmatic Access to Office XP VBA Project on keelatud
Näidiste ettevalmistamine
-
Esmalt looge uus tekstifail nimega KbTest.bas (ilma .txt laiendita). See on koodimoodul, mille lisame Excel käitusajaga.
-
Lisage tekstifaili järgmised koodiread.
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 -
Salvestage tekstifail kausta C:\KbTest.bas ja sulgege fail.
-
Käivitage Visual Basic ja looge standardprojekt. Form1 luuakse vaikimisi.
-
Klõpsake ProjectkäskuReferences ja valige seejärel sobiv teegi tüüp, mille abil saate kasutada varajast sidumist Excel.
Näiteks valige üks järgmistest.-
Kui Microsoft Office Excel 2007, valige teek 12.0.
-
Kui Microsoft Office Excel 2003, valige teek 11.0.
-
Kui Microsoft Excel 2002, valige teek 10.0.
-
Kui Microsoft Excel 2000, valige teek 9,0.
-
Kui Microsoft Excel 97, valige teek 8,0.
-
-
Lisage nupp vormile Form1 ja paigutage nupu klõpsusündmuse käitlejasse järgmine kood.
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 -
Excel 2002 ja uuemate versioonide Excel peate sisse lülitama juurdepääsu VBA-projektile. Selleks kasutage ühte järgmistest meetoditest.
-
Klõpsake Excel 2007 nuppu Microsoft Office ja seejärel nuppu Excel Suvandid. Klõpsake nuppu Usalduskeskus ja seejärel käsku Usalduskeskus Sätted. Klõpsake Sätted makro, märkige ruut Usalda juurdepääsu VBA projekti objektimudelile ja seejärel klõpsake kaks korda nuppu OK.
-
Valige Excel 2003 ja varasemates versioonides Excel menüü Tööriistad käsk Makro ja seejärel klõpsake nuppu Turve. Klõpsake dialoogiboksis Turve vahekaarti Usaldusväärsed allikad ja märkige ruut Usalda juurdepääsu Visual Basic Project.
-
-
Käivitage Visual Basic projekt.
Viited
Lisateavet Office Visual Basic kohta leiate Office veebisaidilt: