Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

Súhrn

Pri automatizovaní produktu balíka Office z programu Visual Basic môže byť užitočné presunúť časť kódu do modulu microsoft Visual Basic for Applications (VBA), ktorý sa dá spustiť v rámci priestoru procesu na serveri. Môže to zvýšiť celkovú rýchlosť spustenia pre vašu aplikáciu a pomôcť zmierniť problémy, ak server vykoná akciu len vtedy, keď sa uskutočňuje hovor.

Tento článok ukazuje, ako dynamicky pridávať modul VBA do spustených Office z programu Visual Basic a potom vyvolanie makra tak, aby vyplnil hárok počas procesu.

Ďalšie informácie

Nasledujúca ukážka demonštruje vloženie modulu kódu Microsoft Excel, no pre Word a PowerPoint môžete použiť rovnaký postup, pretože oba majú rovnaký nástroj VBA.

Ukážka používa statický textový súbor pre modul kódu, ktorý je vložený do Excel. Možno budete chcieť zvážiť presunutie kódu do súboru zdroja, ktorý môžete kompilovať do aplikácie, a potom v prípade potreby v priebehu priebehu extrahovať do dočasného súboru. V tomto prípade by bolo projekt lepšie spravovateľné na opätovné rozdelenie.

Počnúc Microsoft Office XP musí používateľ udeliť prístup k objektového modelu vba predtým, než bude fungovať akýkoľvek automatizačný kód napísaný na manipuláciu s jazykom VBA. Toto je nová funkcia zabezpečenia s Office XP. Ďalšie informácie nájdete v tomto článku vedomostnej databázy Knowledge Base:

282830 Programový prístup k Office XP VBA Project je odmietnutý

Steps to build the sample

  1. Najskôr vytvorte nový textový súbor s názvom KbTest.bas (bez .txt príponou). Toto je modul kódu, ktorý Excel vložiť do skupiny počas priebehu priebehu.

  2. Do textového súboru pridajte nasledujúce riadky kódu:

       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. Uložte textový súbor do adresára C:\KbTest.bas a potom zatvorte súbor.

  4. Začnite Visual Basic a vytvorte štandardný projekt. Formulár1 sa vytvorí predvolene.

  5. V ponuke Project na položku Určovania a potom vyberte príslušnú verziu knižnice typov, ktorá umožňuje používať skorú väzbu na Excel.

    Vyberte napríklad niektorú z týchto možností:

    • V Microsoft Office Excel 2007 vyberte knižnicu 12.0.

    • Ak Microsoft Office Excel 2003, vyberte knižnicu 11.0.

    • Ak Microsoft Excel 2002, vyberte knižnicu 10.0.

    • V Microsoft Excel 2000 vyberte knižnicu 9.0.

    • Ak Microsoft Excel 97, vyberte knižnicu 8.0.

  6. Pridajte tlačidlo do formulára1 a do obsluhy pre udalosť Kliknutie tlačidla umiestnite nasledujúci kód:

       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. Pre Excel 2002 a pre novšie verzie balíka Excel je potrebné zapnúť prístup k projektu VBA. Použite jeden z nasledujúcich postupov:

    • V Excel 2007 kliknite na Microsoft Office a potom kliknite na položku Excel Možnosti. Kliknite na položku Centrum dôveryhodnosti a potom na položku Centrum Nastavenia. Kliknite na Nastavenia, kliknutím začiarknite políčko Dôverovať prístupu k objektového modelu projektu VBA a potom dvakrát kliknite na tlačidlo OK.

    • Vo Excel 2003 a v starších verziách balíka Excel ukážte na položku Makro v ponuke Nástroje a potom kliknite na položku Zabezpečenie. V dialógovom okne Zabezpečenie kliknite na kartu Dôveryhodné zdroje a potom kliknutím začiarknite políčko Dôverovať prístupu k Visual Basic Project údajov.

  8. Spustite Visual Basic projektu.

Odkazy

Ďalšie informácie o automatizácii služieb Office od Visual Basic nájdete na lokalite technickej Office pre vývojovú podporu na nasledujúcej adrese:

http://support.microsoft.com/ofd

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×