So erstellen und programmgesteuert Aufrufen eines Excel-Makros aus VB

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 194611
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Zusammenfassung
Dieser Artikel veranschaulicht, wie Sie erstellen Sie ein Microsoft Excel-VBA-Makro programmgesteuert aus Visual Basic, aufrufen und eine Symbolleisten-Schaltfläche zuordnen können.
Weitere Informationen
Gehen Sie die Beispielanwendung erstellen:
  1. Erstellen Sie ein Standard EXE-Projekt in Visual Basic. Form1 wird standardmäßig erstellt.
  2. Klicken Sie auf Verweise im Menü Projekt und aktivieren Sie "Microsoft Visual Basic für Anwendungserweiterbarkeit".
  3. Fügen Sie eine Befehlsschaltfläche zu Form1 hinzu.
  4. Kopieren und fügen Sie den folgenden Code zum Code-Fenster des Formulars:
          Private Sub Command1_Click()       ' Start Excel       Dim xlapp As Object 'Excel.Application       Set xlapp = CreateObject("Excel.Application")       ' Make it visible...       xlapp.Visible = True       ' Add a new workbook       Dim xlbook As Object 'Excel.Workbook       Set xlbook = xlapp.Workbooks.Add       ' Add a module       Dim xlmodule As Object 'VBComponent       Set xlmodule = xlbook.VBProject.VBComponents.Add(1) 'vbext_ct_StdModule       ' Add a macro to the module...       Dim strCode As String       strCode = _          "sub MyMacro()" & vbCr & _          "   msgbox ""Inside generated macro!!!"" " & vbCr & _          "end sub"       xlmodule.CodeModule.AddFromString strCode       ' Run the new macro!       xlapp.Run "MyMacro"       ' ** Create a new toolbar with a button to fire macro...       ' Add a new toolbar...       Dim cbs As Object 'CommandBars       Dim cb As Object 'CommandBar       Set cbs = xlapp.CommandBars       Set cb = cbs.Add("MyCommandBar", 1, , True) '1=msoBarTop       cb.Visible = True       ' Make it visible & add a button...       Dim cbc As Object 'CommandBarControl       Set cbc = cb.Controls.Add(1) '1=msoControlButton       ' Assign our button to our macro       cbc.OnAction = "MyMacro"       ' Set text...       cbc.Caption = "Call MyMacro()"       ' Set Face image...       ' 51 = white hand       ' 25 = glasses       ' 34 = ink dipper       ' etc...       cbc.FaceId = 51       ' Pause so you can inspect results...       MsgBox "All done, click me to continue...", vbMsgBoxSetForeground       ' Remember to release module       Set xlmodule = Nothing       ' Clean up       xlbook.Saved = True       xlapp.Quit      End Sub						
  5. Führen Sie die Anwendung aus. Sollte angezeigt werden Microsoft Excel starten, gefolgt von einer Meldung im Feld angezeigt "in Makro generiert!!!." Zu diesem Zeitpunkt werden Sie Code innerhalb des generierten Makros ausführen. Klicken Sie auf OK um dieses Dialogfeld zu schließen und müsste dann ein Dialogfeld reporting "Alle erfolgt, klicken Sie mich weiterhin auf." Lassen Sie diese einrichten, und wechseln Sie zu Excel. Sollte es eine neue Symbolleiste mit einer Schaltfläche mit einem weißen Hand-Symbol angezeigt. Visual Basic-Code oben Ihr Makro MyMacro(), über die OnAction-Eigenschaft dieser Schaltfläche zugeordnet. Wenn Sie auf diese Schaltfläche klicken, wird MyMacro() aufgerufen. Klicken Sie einmal zu arbeiten. Klicken Sie auf zurück zum Formular in Visual Basic und dann auf OK im Meldungsfeld "Alle erfolgt, klicken mich fortfahren".

Zusätzliche Hinweise für Office XP

Office XP-Anwendungen verfügen über eine Sicherheitsoption, die den programmatischen Zugriff auf das VBA-Objektmodell erlaubt. Wenn diese Einstellung "off" (Standard) ist, können Sie ein Ausführen des Beispielcodes Fehlermeldung. Weitere Informationen über diese Einstellung und zum Beheben des Fehlers finden Sie unter den folgenden Artikel der Microsoft Knowledge Base:
282830PRB: Programmatische Zugriff auf Office XP-VBA-Projekt verweigert

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 194611 – Letzte Überarbeitung: 12/05/2015 09:30:27 – Revision: 4.4

Microsoft Excel 2000 Standard Edition, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Office XP Developer Edition, Microsoft Office 2000 Developer Edition, Microsoft Excel 2002 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbnosurvey kbarchive kbmt kbautomation kbhowto KB194611 KbMtde
Feedback
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)