Přihlásit se pomocí účtu Microsoft
Přihlaste se nebo si vytvořte účet.
Dobrý den,
Vyberte jiný účet.
Máte více účtů.
Zvolte účet, pomocí kterého se chcete přihlásit.

Shrnutí

Při automatizaci Office produktu z Visual Basic může být užitečné přesunout část kódu do modulu Microsoft jazyk Visual Basic for Application (VBA), který může běžet uvnitř prostoru procesu serveru. To může zvýšit celkovou rychlost provádění vaší aplikace a zmírnit problémy, pokud server provádí akci jenom v případě, že je hovor během procesu.

Tento článek ukazuje, jak dynamicky přidat modul JAZYKa VBA do spuštěné Office z Visual Basic a pak zavolat makro a vyplnit list v procesu.

Další informace

Následující ukázka ukazuje vložení modulu kódu do Microsoft Excel, ale můžete použít stejnou techniku pro Word a PowerPoint, protože oba obsahují stejný modul JAZYKa VBA.

Ukázka používá statický textový soubor pro modul kódu, který se vloží do Excel. Můžete zvážit přesunutí kódu do souboru prostředků, který můžete zkompilovat do aplikace, a v případě potřeby extrahovat do dočasného souboru za běhu. Díky tomu bude projekt pro opětovné rozdělení spravitelný.

Počínaje Microsoft Office XP musí uživatel udělit přístup k objektovému modelu jazyka VBA, než bude fungovat jakýkoli kód automatizace napsaný pro práci s jazykem VBA. Toto je nová funkce zabezpečení s Office XP. Další informace najdete v následujícím článku znalostní báze Knowledge Base:

282830 Programový přístup k jazyku VBA Office XP je Project odepřen.

Postup vytvoření ukázky

  1. Nejdřív vytvořte nový textový soubor s názvem KbTest.bas (bez .txt souboru). Jedná se o modul kódu, který v Excel za běhu vložíme do aplikace.

  2. Do textového souboru přidejte následující řádky 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ý soubor do adresáře C:\KbTest.bas a pak soubor zavřete.

  4. Začněte Visual Basic a vytvořte standardní projekt. Ve výchozím nastavení se vytvoří formulář1.

  5. V nabídce Project klikněte naReferences a vyberte příslušnou verzi knihovny typů, která vám umožní použít časnou vazbu k Excel.

    Vyberte třeba jednu z těchto možností:

    • V Microsoft Office Excel 2007 vyberte knihovnu 12.0.

    • V Microsoft Office Excel 2003 vyberte knihovnu 11.0.

    • V Microsoft Excel 2002 vyberte knihovnu 10.0.

    • V Microsoft Excel 2000 vyberte knihovnu 9.0.

    • V Microsoft Excel 97 vyberte knihovnu 8.0.

  6. Přidejte tlačítko do formuláře Form1 a umístěte do obslužné rutiny události Click tlačítka následující 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. V Excel 2002 a novějších verzích Excel musíte zapnout přístup k projektu VBA. Použijte některý z následujících postupů:

    • V Excel 2007 klikněte na tlačítko Microsoft Office a potom klikněte na Excel Možnosti. Klikněte na Centrum zabezpečení a potom klikněte na Centrum zabezpečení Nastavení. Klikněte na Nastavení, kliknutím zaškrtněte políčko Důvěřovat přístupu k objektovému modelu projektu VBA a potom dvakrát klikněte na OK.

    • V Excel 2003 a starších verzích Excel přejděte v nabídce Nástroje na Makro a potom klikněte na Zabezpečení. V dialogovém okně Zabezpečení klikněte na kartu Důvěryhodné zdroje a potom kliknutím zaškrtněte políčko Důvěřovat Visual Basic Project přístup.

  8. Spusťte Visual Basic projekt.

Odkazy

Další informace o automatizaci Office z Visual Basic najdete na webu Office development support na následující adrese:

http://support.microsoft.com/ofd

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?
Po stisknutí tlačítka pro odeslání se vaše zpětná vazba použije k vylepšování produktů a služeb Microsoftu. Váš správce IT bude moci tato data shromažďovat. Prohlášení o zásadách ochrany osobních údajů.

Děkujeme vám za zpětnou vazbu.

×