Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Zusammenfassung

Bei der Automatisierung eines Office-Produkts aus Visual Basic kann es hilfreich sein, einen Teil des Codes in ein Microsoft Visual Basic for Applications-Modul (VBA) zu verschieben, das im Prozessbereich des Servers ausgeführt werden kann. Dadurch kann die Gesamtausführungsgeschwindigkeit für Ihre Anwendung erhöht und Probleme gemildert werden, wenn der Server nur dann eine Aktion ausgeführt hat, wenn ein Aufruf ausgeführt wird.

In diesem Artikel wird veranschaulicht, wie Sie einer ausgeführten Office-Anwendung aus Visual Basic dynamisch ein VBA-Modul hinzufügen und dann das Makro aufrufen, um ein Arbeitsblatt während des Vorgangs zu füllen.

Weitere Informationen

Das folgende Beispiel veranschaulicht das Einfügen eines Codemoduls in Microsoft Excel. Sie können jedoch dasselbe Verfahren für Word und PowerPoint verwenden, da beide das gleiche VBA-Modul enthalten.

Im Beispiel wird eine statische Textdatei für das Codemodul verwendet, das in die Datei Excel. Möglicherweise möchten Sie den Code in eine Ressourcendatei verschieben, die Sie in Ihre Anwendung kompilieren können, und dann bei Bedarf in eine temporäre Datei extrahieren. Dadurch wäre das Projekt für die Erneute Verteilung besser verwaltbar.

Beginnend mit Microsoft Office XP muss ein Benutzer Zugriff auf das VBA-Objektmodell gewähren, bevor Automatisierungscode, der zum Bearbeiten von VBA geschrieben wurde, funktioniert. Dies ist ein neues Sicherheitsfeature mit Office XP. Weitere Informationen finden Sie im folgenden Knowledge Base-Artikel:

282830 Programmgesteuerter Zugriff auf Office XP VBA-Project wird verweigert

Schritte zum Erstellen des Beispiels

  1. Erstellen Sie zunächst eine neue Textdatei mit dem Namen KbTest.bas (ohne die Erweiterung .txt Dateierweiterung). Dies ist das Codemodul, das zur Laufzeit in Excel eingefügt wird.

  2. Fügen Sie in der Textdatei die folgenden Codezeilen hinzu:

       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. Speichern Sie die Textdatei im Verzeichnis "C:\KbTest.bas", und schließen Sie dann die Datei.

  4. Beginnen Visual Basic und Erstellen eines Standardprojekts. Formular1 wird standardmäßig erstellt.

  5. Klicken Sie Project Menü Start auf Verweise, und wählen Sie dann die entsprechende Typbibliotheksversion aus, mit der Sie frühe Bindungen zum Erstellen von Excel.

    Wählen Sie beispielsweise eine der folgenden Optionen aus:

    • Wählen Microsoft Office Excel 2007 die Bibliothek 12.0 aus.

    • Wählen Microsoft Office Excel 2003 die Bibliothek 11.0 aus.

    • Wählen Microsoft Excel 2002 die Bibliothek 10.0 aus.

    • Wählen Microsoft Excel 2000 die Bibliothek 9.0 aus.

    • Wählen Microsoft Excel 97 die Bibliothek 8.0 aus.

  6. Fügen Sie eine Schaltfläche zu Form1 hinzu, und platzieren Sie den folgenden Code im Handler für das Click-Ereignis der Schaltfläche:

       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. Für Excel 2002 und für spätere Excel müssen Sie den Zugriff auf das VBA-Projekt aktivieren. Wenden Sie hierzu eine der folgenden Methoden an:

    • Klicken Excel 2007 auf die Schaltfläche Microsoft Office, und klicken Sie dann auf Excel Optionen. Klicken Sie auf Trust Center und dann auf Einstellungen für das Trust Center. Klicken Sie Einstellungen Makro-Objekt, klicken Sie, um das Kontrollkästchen Zugriff auf das VBA-Projektobjektmodell vertrauen zu aktivieren, und klicken Sie dann zweimal auf OK.

    • Zeigen Excel 2003 und in früheren Excel im Menü Extras auf Makro, und klicken Sie dann auf Sicherheit. Klicken Sie im Dialogfeld Sicherheit auf die Registerkarte Vertrauenswürdige Quellen, und aktivieren Sie dann das Kontrollkästchen Zugriff auf Visual Basic Project vertrauenswürdige Datenquellen vertrauen.

  8. Führen Sie das Visual Basic aus.

Informationsquellen

Weitere Informationen zur Automatisierung von Office von Visual Basic finden Sie auf der Office Development Support-Website unter der folgenden Adresse:

http://support.microsoft.com/ofd

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×