Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Kopsavilkums

Automatizējot Office produktu no Visual Basic, var būt noderīgi pārvietot koda daļu uz Microsoft Visual Basic for Applications (VBA) moduli, kas var darboties servera procesa vietā. Tas var uzlabot vispārējo izpildes ātrumu jūsu lietojumprogrammai un palīdzēt samazināt problēmas, ja serveris veic darbību tikai tad, kad tiek veikts izsaukums.

Šajā rakstā aprakstīts, kā dinamiski pievienot VBA moduli palaistai Office lietojumprogrammai no Visual Basic un pēc tam izsaukt makro, lai aizpildītu laikā izveidotu darblapu.

Papildinformācija

Tālāk redzamais paraugs parāda koda moduļa ievietošanu programmā Microsoft Excel, bet varat izmantot to pašu metodi programmai Word un PowerPoint, jo abas ietver vienu un to pašu VBA programmu.

Paraugs izmanto statisku teksta failu koda modulim, kas tiek ievietots Excel. Iespējams, vēlēsities apsvērt iespēju pārvietot kodu uz resursu failu, kuru varat kompilēt lietojumprogrammā, un pēc tam izvilkt pagaidu failā, ja tas nepieciešams izpildlaikā. Tādējādi projekts būs pārvaldāms atkārtotai izplatīšanai.

Sākot ar Microsoft Office XP, lietotājam ir jāpiešķir piekļuve VBA objekta modelim, pirms darbosies automatizācijas kods, kas uzrakstīts manipulācijai ar VBA. Šis ir jauns drošības līdzeklis operētājsistēmā Office XP. Papildinformāciju skatiet šajā zināšanu bāzes rakstā:

282830 Programmatiska piekļuve Office XP VBA Project liegta

Steps to build the sample

  1. Vispirms izveidojiet jaunu teksta failu ar nosaukumu KbTest.bas (bez .txt paplašinājuma). Šis ir koda modulis, ko pēc Excel mēs ievietosim lappušu izpildē.

  2. Teksta failā pievienojiet šādas koda rindiņas:

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

  4. Sāciet Visual Basic un izveidojiet standarta projektu. Veidlapa1 tiek izveidota pēc noklusējuma.

  5. Izvēlnē Project noklikšķiniet uz Atsauksmes un pēc tam atlasiet atbilstošo tipu bibliotēkas versiju, kas ļauj izmantot agrīnu saistīšanu, lai Excel.

    Piemēram, atlasiet kādu no šīm opcijām:

    • Lai Microsoft Office Excel 2007, atlasiet bibliotēku 12.0.

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

    • Lai Microsoft Excel 2002, atlasiet bibliotēku 10.0.

    • Lai Microsoft Excel 2000, atlasiet 9.0 bibliotēku.

    • Lai Microsoft Excel 97, atlasiet 8.0 bibliotēku.

  6. Pievienojiet pogu formai1 un novietojiet tālāk norādīto kodu pogas klikšķa notikuma apdarinātājā:

       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. Operētājsistēmas Excel 2002 un jaunākām Excel versijām jāieslēdz piekļuve VBA projektam. Lai to izdarītu, izmantojiet kādu no šīm metodēm:

    • Programmā Excel 2007 noklikšķiniet uz pogas Microsoft Office un pēc tam uz Excel opcijas. Noklikšķiniet uz Drošības kontroles centrs un pēc tam noklikšķiniet uz Drošības kontroles centrs Iestatījumi. Noklikšķiniet uz Iestatījumi makro, noklikšķiniet, lai atzīmētu izvēles rūtiņu Uzticēties VBA projekta objekta modelim un pēc tam divas reizes noklikšķiniet uz Labi.

    • Programmā Excel 2003 un vecākās programmas Excel izvēlnē Rīki norādiet uz Makro un pēc tam noklikšķiniet uz Drošība. Dialoglodziņā Drošība noklikšķiniet uz cilnes Uzticamie avoti un pēc tam noklikšķiniet uz izvēles rūtiņas Uzticēties Visual Basic Project vadīklām.

  8. Palaidiet Visual Basic projektu.

Atsauces

Lai iegūtu papildinformāciju par Office automatizāciju Visual Basic, lūdzu, skatiet Office izstrādes atbalsta vietni šajā adresē:

http://support.microsoft.com/ofd

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×