Hatókör
Microsoft Office Professional Edition 2003 Excel 2010

Ö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.