Prisijunkite prie „Microsoft“
Prisijunkite arba sukurkite paskyrą.
Sveiki,
Pasirinkti kitą paskyrą.
Turite kelias paskyras
Pasirinkite paskyrą, kurią naudodami norite prisijungti.

Suvestinė

Automatizuojant Office produktą iš "Visual Basic", gali būti naudinga perkelti dalį kodo į "Microsoft Visual Basic for Applications" (VBA) modulį, kuris gali veikti serverio proceso erdvėje. Tai gali padidinti bendrą jūsų taikomosios programos vykdymo greitį ir padėti sumažinti problemas, jei serveris atlieka veiksmą tik kai skambutis vyksta.

Šiame straipsnyje parodoma, kaip dinamiškai įtraukti VBA modulį į Office taikomąją programą iš "Visual Basic", tada iškviesti makrokomandą, kad užpildytumėte apdorojamą darbalapį.

Daugiau informacijos

Toliau pateiktame pavyzdyje parodytas kodo modulio įterpimas į Microsoft Excel, bet galite naudoti tą pačią "Word" ir "PowerPoint, nes abiejuose yra tas pats VBA modulis.

Pavyzdys naudoja statinį teksto failą kodo moduliui, kuris įterpiamas į Excel. Galbūt norėsite perkelti kodą į išteklių failą, kurį galite kompiliuoti į savo taikomąją programą, tada, kai reikia, išskleisti į laikinąjį failą. Taip projektas būtų lengviau valdomas, kad būtų galima jį perskirstyti.

Pradedant nuo Microsoft Office XP" vartotojas turi suteikti prieigą prie VBA objekto modelio, kad veiktų bet kuris automatizavimo kodas, parašytas valdyti VBA. Tai nauja saugos funkcija su "Office XP". Daugiau informacijos ieškokite šiame žinių bazės straipsnyje:

282830 Programinė prieiga prie "Office XP" VBA Project uždrausta

Veiksmai, kaip sukurti pavyzdį

  1. Pirmiausia sukurkite naują teksto failą, pavadintą KbTest.bas (be .txt plėtinio). Tai kodo modulis, kurį įterpsime į Excel vykdymo metu.

  2. Teksto faile įtraukite šias kodo eilutes:

       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. Įrašykite teksto failą į katalogą C:\KbTest.bas, tada uždarykite failą.

  4. Pradėkite Visual Basic ir sukurkite standartinį projektą. Forma1 sukuriama pagal numatytuosius nustatymus.

  5. Meniu ProjectspustelėkiteAferencijos, tada pasirinkite atitinkamą tipo bibliotekos versiją, kuri leidžia naudoti ankstyvą susiejimą su Excel.

    Pavyzdžiui, pasirinkite vieną iš šių veiksmų:

    • Jei Microsoft Office Excel 2007" pasirinkite biblioteką 12.0.

    • Jei Microsoft Office Excel 2003" pasirinkite biblioteką 11.0.

    • Jei Microsoft Excel 2002" pasirinkite biblioteką 10.0.

    • Jei Microsoft Excel 2000" pasirinkite 9.0 biblioteką.

    • Jei Microsoft Excel 97" pasirinkite biblioteką 8.0.

  6. Įtraukite mygtuką į "Form1" ir į mygtuko "Click" įvykio apdorojimo programą įdėkite šį kodą:

       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. Jei Excel 2002" ir naujesnėse "Excel versijose, turite įjungti prieigą prie VBA projekto. Norėdami tai padaryti, naudokite vieną iš šių būdų:

    • 2007 Excel spustelėkite mygtuką Microsoft Office, tada spustelėkite Excel parinktys. Spustelėkite Patikimumo centras, tada spustelėkite Patikimumo centro Parametrai. Spustelėkite Makrokomandos Parametrai, spustelėkite, kad pasirinktumėte žymės langelį Pasitikėti prieiga prie VBA projekto objekto modelio, tada du kartus spustelėkite Gerai.

    • 2003 Excel. ir ankstesnėse "Excel" versijose meniu Įrankiai nukreipkite žymiklį į Makrokomanda, tada spustelėkite Sauga. Dialogo lange Sauga spustelėkite skirtuką Patikimi šaltiniai, tada spustelėkite, kad pasirinktumėte žymės langelį Pasitikėti prieiga prie Visual Basic Project prieigos.

  8. Paleiskite Visual Basic projektą.

Nuorodos

Daugiau informacijos apie "Office Visual Basic automatizavimą žr. Office kūrimo palaikymo svetainėje šiuo adresu:

http://support.microsoft.com/ofd

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.

Ar ši informacija buvo naudinga?

Ar esate patenkinti kalbos kokybe?
Kas turėjo įtakos jūsų įspūdžiams?
Paspaudus mygtuką Pateikti, jūsų atsiliepimai bus naudojami tobulinant „Microsoft“ produktus ir paslaugas. Jūsų IT administratorius galės rinkti šiuos duomenis. Privatumo patvirtinimas.

Dėkojame už jūsų atsiliepimą!

×