So erstellen und programmgesteuert Aufrufen eines Excel-Makros aus VB

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 194611 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

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

Eigenschaften

Artikel-ID: 194611 - Geändert am: Dienstag, 23. Januar 2007 - Version: 4.4
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbmt kbautomation kbhowto KB194611 KbMtde
Maschinell übersetzter Artikel
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
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com