Bejelentkezés Microsoft-fiókkal
Jelentkezzen be, vagy hozzon létre egy fiókot.
Üdvözöljük!
Válasszon másik fiókot.
Több fiókja van
Válassza ki a bejelentkezéshez használni kívánt fiókot.

Összefoglalás

Amikor automatizál egy Office-terméket az Visual Basic-ból, hasznos lehet a kód egy részét áthelyezni egy Microsoft Visual Basic for Applications (VBA) modulba, amely a kiszolgáló folyamatterületén belül fut. Ez növelheti az alkalmazás általános végrehajtási sebességét, és segíthet a problémák megoldásában, ha a kiszolgáló csak akkor továbbít egy műveletet, ha folyamatban van egy hívás.

Ez a cikk azt mutatja be, hogy miként adhat hozzá dinamikusan egy VBA-modult egy Office futó Visual Basic-alkalmazáshoz, majd hogyan hívható meg a makró a munkalap kitöltéséhez a folyamat során.

További információ

Az alábbi minta egy kódmodul Microsoft Excel a Microsoft Excel- és a PowerPoint használatát mutatja be, mivel mindkettő ugyanazt a VBA-motort tartalmazza.

A minta egy statikus szövegfájlt használ a modulba beszúrt kódmodulhoz Excel. Fontolja meg a kód áthelyezését egy olyan erőforrásfájlba, amit aztán lefordíthat az alkalmazásba, majd szükség esetén ideiglenes fájlba gyűjtheti. Ez a projekt kezelhetőbb lesz az újraterjesztéshez.

A Microsoft Office XP-vel kezdődően a felhasználónak hozzáférést kell adni a VBA-objektummodellhez ahhoz, hogy működjön a VBA-kód kezeléséhez írt automatizálási kód. Ez egy új biztonsági szolgáltatás, amely XP Office rendelkezik. További információt a következő Tudásbázis-cikkben talál:

282830 A VBA-Office XP rendszerhez Project programozott hozzáférés

A minta felépítésének lépései

  1. Először hozzon létre egy KbTest.bas nevű új szövegfájlt (a .txt nélkül). Ezt a kódmodult fogjuk beszúrni Excel futásidőben.

  2. A szövegfájlba vegye fel az alábbi kódsorokat:

       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. Mentse a szövegfájlt a C:\KbTest.bas könyvtárba, majd zárja be a fájlt.

  4. Indítsa Visual Basic, és hozzon létre egy normál projektet. Az űrlap1 alapértelmezés szerint létrejön.

  5. A Project menüben kattintson aReferences elemre, majd válassza ki a megfelelő típusú tárverziót, amellyel korai kötést használhat a Excel.

    Válasszon például az alábbi lehetőségek közül:

    • A Microsoft Office Excel 2007-ben válassza a 12.0 tárat.

    • A Microsoft Office Excel 2003-ban válassza a 11.0 tárat.

    • A Microsoft Excel 2002-ben válassza a 10.0 tárat.

    • A Microsoft Excel 2000-ben válassza a 9.0-s tárat.

    • A Microsoft Excel 97- hez válassza a 8.0-s tárat.

  6. Vegyen fel egy gombot az Űrlap1 űrlapra, és helyezze a következő kódot a gomb Click eseményének kezelőpontba:

       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. A Excel 2002-es és az Excel verziókhoz be kell kapcsolnia a VBA-projekthez való hozzáférést. Ehhez kövesse az alábbi módszerek egyikét:

    • A Excel 2007-ben kattintson a Microsoft Office gombra, majd a Beállítások Excel parancsra. Kattintson az Trust Center elemre, majd az Gépház. Kattintson a Gépház elemre, jelölje be a VBA-projekt objektummodellhez való hozzáférés megbízható jelölőnégyzetet, majd kattintson kétszer az OK gombra.

    • A Excel 2003-ban és a Excel verziókban mutasson az Eszközök menü Makró pontjára, majd kattintson a Biztonság parancsra. A Biztonság párbeszédpanelen kattintson a Megbízható források fülre, majd jelölje be a Hozzáférés megbízható Visual Basic Project jelölőnégyzetet.

  8. Futtassa a Visual Basic projektet.

Hivatkozások

Ha többet meg kell Office a Visual Basic, látogasson el a Office fejlesztésére vonatkozó támogatási webhelyre az alábbi címen:

http://support.microsoft.com/ofd

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.

Hasznos volt ez az információ?

Mennyire elégedett a fordítás minőségével?
Mi volt hatással a felhasználói élményére?
Ha elküldi a visszajelzést, a Microsoft felhasználja azt a termékei és szolgáltatásai továbbfejlesztéséhez. Az informatikai rendszergazda képes lesz ezeket az adatokat összegyűjteni. Adatvédelmi nyilatkozat.

Köszönjük a visszajelzését!

×