Kā dinamiski pievienot un VBA makro Visual Basic

Kopsavilkums

Kad automatizēšana Visual Basic Office produktu, var noderēt koda daļu pārvietot uz Microsoft Visual Basic for Applications (VBA) modulis, kas var palaist servera iekšpusē procesu. Tas var uzlabot kopējo programmu izpildes ātrumu un palīdzētu mazināt problēmas, ja serveris tikai veic darbību, ja procesa.

Šis raksts parāda, kā dinamiski pievienot VBA modulis darbojas Office programmu Visual Basic un pēc tam izsaukt makro, lai aizpildītu darblapas procesu.

Papildinformācija

Šāds piemērs ilustrē koda moduļa ievietošana programmā Microsoft Excel, bet jūs varat izmantot to pašu metodi Word un PowerPoint, jo gan iekļautu pašu VBA programmu.

Parauga koda moduli, kas ir ievietota Excel izmanto statiska teksta fails. Ieteicams apsvērt resursu failu, kas apkopo jūsu lietojumprogrammu un pēc tam izvērsiet nepieciešamības izpildlaikā pagaidu failu pārvietošanu kodu. Tas būtu projekta pārvaldāmam atkārtotai izplatīšanai.

Sākot ar Microsoft Office XP, lietotājam ir piekļuvi VBA objekta modeļa pirms jebkuru automatizācijas kodu rakstīts manipulēt ar VBA darbosies. Šis ir jauns drošības līdzeklis kopā ar Office XP. Lai iegūtu papildinformāciju, skatiet šo zināšanu bāzes rakstu:

Office XP VBA projektu programmatiskā piekļuve ir liegta

Darbības, lai izveidotu paraugs

  1. Vispirms izveidojiet jaunu teksta failu ar nosaukumu KbTest.bas (bez paplašinājuma. txt). Tas ir koda moduli, kas mums ievietot Excel izpildes laikā.

  2. Teksta failu, pievienojiet tālāk norādītās koda rindas:

       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. Saglabājiet failu teksta C:\KbTest.bas direktoriju un pēc tam aizveriet failu.

  4. Startēt Visual Basic un izveidotu standarta projektu. Pēc noklusējuma tiek izveidota veidlapa Form1.

  5. Projekta izvēlnē noklikšķiniet uzatsaucesun pēc tam atlasiet atbilstošo tipu bibliotēkas versija, kas nodrošina iespēju izmantot agrīnā saistīšana ar Excel.

    Piemēram, atlasiet vienu no šīm darbībām:

    • Atlasiet Microsoft Office Excel 2007 12.0 bibliotēka.

    • Microsoft Office Excel 2003, atlasiet 11.0 bibliotēku.

    • Microsoft Excel 2002, atlasiet 10,0 bibliotēku.

    • Microsoft Excel 2000, atlasiet 9.0 bibliotēku.

    • Microsoft Excel 97, atlasiet 8.0 bibliotēku.

  6. Form1 pievienojiet pogu un pogu noklikšķiniet uz notikuma apdarinātājs ievieto šādu kodu:

       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. Excel 2002 un Excel jaunākās versijas jāieslēdz piekļūt VBA projektu. Lai to izdarītu, izmantojiet kādu no šīm metodēm:

    • Programmā Excel 2007 noklikšķiniet uz Microsoft Office pogasun pēc tam noklikšķiniet uz Excel opcijas. Noklikšķiniet uz Drošības kontroles centrsun pēc tam noklikšķiniet uz Drošības kontroles centra iestatījumi. Noklikšķiniet uz Makro iestatījumi, atzīmējiet izvēles rūtiņu Trust piekļuvi VBA projekta objekta modeļa un pēc tam divreiz noklikšķiniet uz Labi .

    • Programmā Excel 2003 un vecākās programmas Excel versijās izvēlnē Rīki norādiet uz makro un pēc tam noklikšķiniet uz Drošība. Drošības dialoglodziņā noklikšķiniet uz zīmnes Uzticami avoti un pēc tam noklikšķiniet, lai atzīmētu izvēles rūtiņu Trust piekļuve projektam Visual Basic .

  8. Palaist Visual Basic projektu.

Atsauces

Papildinformāciju par Office automatizēšanu Visual Basic, skatiet Office izstrādes atbalsta vietas adresi:


Vai nepieciešama papildu palīdzība?

Paplašiniet savas prasmes
Iepazīties ar apmācību
Esiet pirmais, kas saņem jaunās iespējas
Pievienoties Microsoft Insider

Vai šī informācija bija noderīga?

Paldies par jūsu atsauksmēm!

Paldies par atsauksmēm! Šķiet, ka jums varētu būt noderīgi sazināties ar kādu no mūsu Office atbalsta speciālistiem.

×