Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zusammenfassung
In diesem Schritt-für-Schritt-Artikel wird die Verwendung von Visual Basic 6.0 zum Abrufen der Namen von Makros aus einer Excel-Arbeitsmappe beschrieben.
Anforderungen
In den folgenden Artikeln werden die empfohlenen Hardware, Software, Netzwerkinfrastruktur, Kenntnisse und Service Packs beschrieben, die Sie benötigen:
- Excel 2000, Excel 2002, Office Excel 2003 oder Office Excel 2007
- Excel-Makros
- Visual Basic for Applications
Erstellen einer Excel-Arbeitsmappe mit zwei Makros
Starten Sie Excel. Eine neue leere Arbeitsmappe wird erstellt.
Drücken Sie ALT+F11, um den Visual Basic-Editor zu starten.
Doppelklicken Sie im Projekt-Explorer auf "ThisWorkbook ", um den Code-Editor zu starten.
Fügen Sie den folgenden Code für zwei einfache Makros in den Code-Editor ein:
Option Explicit Sub Macro_A() MsgBox "This is Macro A" End Sub Sub Macro_B() MsgBox "This is Macro B" End Sub
Schließen Sie den Visual Basic-Editor, und kehren Sie zur Tabellenkalkulationsansicht zurück.
Speichern Sie die Arbeitsmappe in Excel 2003 und in früheren Versionen von Excel als C:\Abc.xls.
Speichern Sie die Arbeitsmappe in Excel 2007 als arbeitsmappe mit Makros mit dem Namen "C:\Abc.xlsm".
Schließen Sie die Arbeitsmappe, und beenden Sie Excel.
Erstellen einer Visual Basic-Anwendung zum Auflisten der Makros in der Arbeitsmappe
Erstellen Sie in Visual Basic 6.0 ein neues Standard EXE-Projekt.
Klicken Sie im Menü "Projekt " auf "Verweise". Wählen Sie im Dialogfeld "Verweise " die folgenden Verweise aus:
- Microsoft Visual Basic for Applications Extensibility 5.3
- Für Microsoft Excel 2000: Microsoft Excel 9.0-Objektbibliothek
- Für Microsoft Excel 2002: Microsoft Excel 10.0-Objektbibliothek
- Für Microsoft Office Excel 2003: Microsoft Excel 11.0-Objektbibliothek
- Für Microsoft Office Excel 2007: Microsoft Excel 12.0-Objektbibliothek
Klicken Sie auf OK.
Fügen Sie dem Formular eine Schaltfläche hinzu. Die Schaltfläche hat den Standardnamen "Command1".
Fügen Sie dem Formular ein Listenfeld hinzu. Das Listenfeld hat den Standardnamen "List1".
Definieren Sie eine Klickereignishandlerprozedur für die Schaltfläche. Verwenden Sie den folgenden Code für dieses Verfahren, um Informationen zu den Makros anzuzeigen, die in C:\Abc.xls definiert sind:
Private Sub Command1_Click() ' Declare variables to access the Excel workbook. Dim objXLApp As Excel.Application Dim objXLWorkbooks As Excel.Workbooks Dim objXLABC As Excel.Workbook ' Declare variables to access the macros in the workbook. Dim objProject As VBIDE.VBProject Dim objComponent As VBIDE.VBComponent Dim objCode As VBIDE.CodeModule ' Declare other miscellaneous variables. Dim iLine As Integer Dim sProcName As String Dim pk As vbext_ProcKind ' Open Excel, and open the workbook. Set objXLApp = New Excel.Application Set objXLWorkbooks = objXLApp.Workbooks Set objXLABC = objXLWorkbooks.Open("C:\ABC.XLS") ' Empty the list box. List1.Clear ' Get the project details in the workbook. Set objProject = objXLABC.VBProject ' Iterate through each component in the project. For Each objComponent In objProject.VBComponents ' Find the code module for the project. Set objCode = objComponent.CodeModule ' Scan through the code module, looking for procedures. iLine = 1 Do While iLine < objCode.CountOfLines sProcName = objCode.ProcOfLine(iLine, pk) If sProcName <> "" Then ' Found a procedure. Display its details, and then skip ' to the end of the procedure. List1.AddItem objComponent.Name & vbTab & sProcName iLine = iLine + objCode.ProcCountLines(sProcName, pk) Else ' This line has no procedure, so go to the next line. iLine = iLine + 1 End If Loop Set objCode = Nothing Set objComponent = Nothing Next Set objProject = Nothing ' Clean up and exit. objXLABC.Close objXLApp.Quit End Sub
Testen des Beispiels
- Erstellen Sie die Anwendung, und führen Sie sie aus.
- Klicken Sie auf die Befehlsschaltfläche. Im Listenfeld werden die Namen aller Makros und der Arbeitsmappe, die sie enthalten, wie folgt angezeigt: ThisWorkbook Macro_A ThisWorkbook Macro_B
Problembehandlung
Aufgrund erweiterter Sicherheitsbestimmungen in Excel 2002, Excel 2003 und Excel 2007 erhalten Sie möglicherweise die folgende Fehlermeldung aus dem Visual Basic-Programm, wenn Sie Excel 2002, Excel 2003 oder Excel 2007 verwenden: Der programmgesteuerte Zugriff auf Visual Basic Project ist nicht vertrauenswürdig.
Weitere Informationen zu diesem Problem und dessen Behebung erhalten Sie, indem Sie auf die folgende Artikelnummer klicken, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
282830 PRB: Programmgesteuerter Zugriff auf Office XP VBA-Projekt wird verweigert
References
Weitere Informationen finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
Microsoft Office-Entwicklung mit Visual Studio
Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
219905 Dynamisches Hinzufügen und Ausführen eines VBA-Makros aus Visual Basic