Freigeben über


Exemplarische Vorgehensweise: Office-Programmierung in Visual Basic

Visual Studio bietet Funktionen in Visual Basic, die die Microsoft Office-Programmierung verbessern. Funktionen in Visual Basic umfassen automatisch implementierte Eigenschaften, Anweisungen in Lambdaausdrücken sowie Auflistungsinitialisierer. Sie können Typinformationen einbetten, wodurch Assemblys bereitgestellt werden können, die mit COM-Komponenten interagieren, ohne primäre Interop-Assemblys (PIAs) auf dem Computer des Benutzers bereitzustellen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten Assemblys.

Diese exemplarische Vorgehensweise veranschaulicht diese Funktionen im Kontext der Office-Programmierung, aber viele dieser Funktionen sind auch bei der allgemeinen Programmierung nützlich. In der exemplarischen Vorgehensweise verwenden Sie eine Excel-Add-In-Anwendung, um eine Excel-Arbeitsmappe zu erstellen. Als nächstes erstellen Sie ein Word-Dokument, das einen Link zur Arbeitsmappe enthält. Zum Schluss sehen Sie, wie Sie die PIA-Abhängigkeit aktivieren und deaktivieren können.

Voraussetzungen

Auf Ihrem Computer müssen Microsoft Office Excel und Microsoft Office Word oder neuere Versionen installiert sein, um diese exemplarische Vorgehensweise ausführen zu können.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

Einrichten einer Excel-Add-In-Anwendung

  1. Starten Sie Visual Studio.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Erweitern Sie im Bereich Installierte Vorlagen die Option Visual Basic, erweitern Sie dann Office, und klicken Sie auf die Jahreszahl der Version des Office-Produkts.

  4. Klicken Sie im Bereich Vorlagen auf Excel <Version> Add-in.

  5. Sehen Sie am oberen Rand des Bereichs Vorlagen nach, um sicherzustellen, dass .NET Framework 4 oder eine höhere Version im Feld Zielframework angezeigt wird.

  6. Geben Sie, wenn gewünscht, einen Namen für das Projekt in das Feld Name ein.

  7. Klicken Sie auf OK.

  8. Das neue Projekt wird im Projektmappen-Explorer angezeigt.

Hinzufügen von Verweisen

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und klicken Sie dann auf Verweis hinzufügen. Das Dialogfeld Verweis hinzufügen wird angezeigt.

  2. Wählen Sie auf der Registerkarte Assemblys die Option Microsoft.Office.Interop.Excel, Version <version>.0.0.0 (einen Schlüssel für die Versionsnummer des Office-Produkts finden Sie unter Microsoft Versions (in englischer Sprache)), in der Liste Komponentenname aus, und halten Sie dann die STRG-Taste gedrückt, während Sie Microsoft.Office.Interop.Word, version <version>.0.0.0 auswählen. Wenn keine Assemblys sichtbar sind, müssen Sie unter Umständen sicherstellen, dass sie installiert sind und angezeigt werden (siehe Vorgehensweise: Installieren von primären Interopassemblys für Office).

  3. Klicken Sie auf OK.

Hinzufügen erforderlicher Imports- oder using-Anweisungen

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei ThisAddIn.vb oder ThisAddIn.cs, und klicken Sie dann auf Code anzeigen.

  2. Fügen Sie die folgenden Imports-Anweisungen zum Anfang der Codedatei hinzu, wenn sie noch nicht vorhanden sind.

    Imports Microsoft.Office.Interop
    

Erstellen einer Liste mit Bankkonten

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, klicken Sie auf Hinzufügen und dann auf Klasse. Nennen Sie die Klasse „Account.vb“. Klicken Sie auf Hinzufügen.

  2. Ersetzen Sie die Definition der Account-Klasse durch den folgenden Code. Die Klassendefinitionen verwenden automatisch implementierte Eigenschaften. Weitere Informationen finden Sie unter Automatisch implementierte Eigenschaften.

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
  3. Fügen Sie den folgenden Code in die ThisAddIn_Startup-Methode in ThisAddIn.vb ein, um eine bankAccounts-Liste mit zwei Konten zu erstellen. Die Listendeklarationen verwenden Auflistungsinitialisierer. Weitere Informationen finden Sie unter Auflistungsinitialisierer.

    Dim bankAccounts As New List(Of Account) From {
        New Account With {
                              .ID = 345,
                              .Balance = 541.27
                         },
        New Account With {
                              .ID = 123,
                              .Balance = -127.44
                         }
        }
    

Exportieren von Daten in Excel

  1. Fügen Sie in der gleichen Datei die folgende Methode der ThisAddIn-Klasse hinzu. Die Methode richtet eine Excel-Arbeitsmappe ein, in die die Daten exportiert werden.

    Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account),
                   ByVal DisplayAction As Action(Of Account, Excel.Range))
    
        With Me.Application
            ' Add a new Excel workbook.
            .Workbooks.Add()
            .Visible = True
            .Range("A1").Value = "ID"
            .Range("B1").Value = "Balance"
            .Range("A2").Select()
    
            For Each ac In accounts
                DisplayAction(ac, .ActiveCell)
                .ActiveCell.Offset(1, 0).Select()
            Next
    
            ' Copy the results to the Clipboard.
            .Range("A1:B3").Copy()
        End With
    End Sub
    
    • Die Methode Add hat einen optionalen Parameter zum Angeben einer bestimmten Vorlage. Optionale Parameter ermöglichen es Ihnen, das Argument für diesen Parameter auszulassen, wenn Sie den Standardwert des Parameters verwenden möchten. Da im vorherigen Beispiel kein Argument gesendet wurde, verwendet Add die Standardvorlage und erstellt eine neue Arbeitsmappe.

    • Die Eigenschaften Range und Offset des range-Objekts verwenden die Funktion Indizierte Eigenschaften. Indizierte Eigenschaften ermöglichen es Ihnen außerdem, die Value-Eigenschaft des Range-Objekts zu verwenden, sodass Sie die Value2-Eigenschaft nicht mehr verwenden müssen. Die Value-Eigenschaft ist indiziert, der Index ist jedoch optional. Optionale Argumente und indizierte Eigenschaften arbeiten im folgenden Beispiel zusammen.

  2. Fügen Sie den folgenden Code am Ende von DisplayInExcel hinzu, um die Spaltenbreite an den Inhalt anzupassen.

    ' Add the following two lines at the end of the With statement.
    .Columns(1).AutoFit()
    .Columns(2).AutoFit()
    

    Weitere Informationen zum Einbetten von Interoptypen finden Sie in den Verfahren „So suchen Sie den PIA-Verweis“ und „So stellen Sie die PIA-Abhängigkeit wieder her“ weiter unten in diesem Artikel.

Aufrufen von DisplayInExcel

  1. Fügen Sie den folgenden Code am Ende der ThisAddIn_StartUp-Methode hinzu. Der Aufruf von DisplayInExcel enthält zwei Argumente. Das erste Argument ist der Name der Liste mit Konten, die verarbeitet werden sollen. Das zweite Argument ist ein mehrzeiliger Lambda-Ausdruck, der definiert, wie die Daten verarbeitet werden. Die ID- und balance-Werte für jedes Konto werden in angrenzenden Zellen angezeigt, und die Zeile wird rot dargestellt, wenn der Saldo kleiner als Null ist.

    DisplayInExcel(bankAccounts,
           Sub(account, cell)
               ' This multiline lambda expression sets custom
               ' processing rules for the bankAccounts.
               cell.Value = account.ID
               cell.Offset(0, 1).Value = account.Balance
    
               If account.Balance < 0 Then
                   cell.Interior.Color = RGB(255, 0, 0)
                   cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0)
               End If
           End Sub)
    
  2. Drücken Sie F5, um das Programm auszuführen. Ein Excel-Arbeitsblatt wird mit den Kontendaten angezeigt.

Hinzufügen eines Word-Dokuments

  1. Fügen Sie den folgenden Code am Ende der ThisAddIn_StartUp-Methode hinzu, um ein Word-Dokument zu erstellen, das einen Link zur Excel-Arbeitsmappe enthält.

    Dim wordApp As New Word.Application
    wordApp.Visible = True
    wordApp.Documents.Add()
    wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
    

    Die Methode PasteSpecial verfügt über sieben Parameter, die als optionale Verweisparameter definiert sind. Benannte und optionale Argumente ermöglichen es Ihnen, die Parameter festzulegen, auf die Sie namentlich zugreifen möchten, und Argumente nur an diese Parameter zu senden. In diesem Beispiel werden Argumente gesendet, um anzugeben, dass ein Link zur Arbeitsmappe in der Zwischenablage erstellt werden soll (Parameter Link) und dass der Link im Word-Dokument als Symbol angezeigt werden soll (Parameter DisplayAsIcon).

Ausführen der Anwendung

  1. Drücken Sie F5, um die Anwendung auszuführen. Excel wird gestartet und zeigt eine Tabelle mit den Informationen der beiden Konten in bankAccounts an. Anschließend wird ein Word-Dokument angezeigt, das einen Link zur Excel-Tabelle enthält.

Bereinigen des abgeschlossenen Projekts

  1. Klicken Sie in Visual Studio auf Projektmappe bereinigen im Menü Erstellen. Andernfalls wird das Add-In jedes Mal ausgeführt, wenn Sie Excel auf Ihrem Computer öffnen.

Suchen des PIA-Verweises

  1. Führen Sie die Anwendung erneut aus, klicken Sie jedoch nicht auf Projektmappe bereinigen.

  2. Wählen Sie Start aus. Suchen Sie Microsoft Visual Studio <Version> und öffnen Sie eine Entwicklereingabeaufforderung.

  3. Geben Sie in der Developer-Eingabeaufforderung für Visual Studio ildasm ein, und drücken Sie dann die EINGABETASTE. Das IL DASM-Fenster wird angezeigt.

  4. Klicken Sie im IL DASM-Fenster im Menü Datei auf Datei>Öffnen. Doppelklicken Sie auf Visual Studio <Version> und dann noch einmal auf Projekte. Öffnen Sie den Ordner für das Projekt, und suchen Sie im Ordner „bin/Debug“ nach der Datei Projektname.dll. Doppelklicken Sie auf Projektname.dll. In einem neuen Fenster werden die Attribute Ihres Projekts sowie Verweise auf andere Module und Assemblys angezeigt. Beachten Sie, dass die Namespaces Microsoft.Office.Interop.Excel und Microsoft.Office.Interop.Word in der Assembly enthalten sind. Standardmäßig importiert der Compiler in Visual Studio die benötigten Typen aus einer referenzierten PIA in Ihre Assembly.

    Weitere Informationen finden Sie unter Vorgehensweise: View Assembly Contents (Vorgehensweise: Anzeigen von Assemblyinhalt).

  5. Doppelklicken Sie auf das Symbol MANIFEST. Es wird ein Fenster angezeigt, das eine Liste von Assemblys enthält, die vom Projekt referenzierte Elemente enthalten. Microsoft.Office.Interop.Excel und Microsoft.Office.Interop.Word sind nicht in der Liste enthalten. Da die Typen, die das Projekt benötigt, in die Assembly importiert wurden, sind keine Verweise auf eine PIA erforderlich. Dadurch wird die Bereitstellung vereinfacht. Die PIAs müssen nicht auf dem Computer des Benutzers vorhanden sein, und da für eine Anwendung keine bestimmte PIA-Version bereitgestellt werden muss, können die Anwendungen so konzipiert sein, dass sie mit mehreren Versionen von Office funktionieren, sofern die erforderlichen APIs in allen Versionen vorhanden sind.

    Da die Bereitstellung von primären Interop-Assemblys nicht mehr benötigt wird, können Sie eine Anwendung in erweiterten Szenarien erstellen, bei denen mehrere Versionen von Office, einschließlich früherer Versionen, verwendet werden. Dies funktioniert jedoch nur, wenn Ihr Code keine APIs verwendet, die nicht in der Version von Office verfügbar sind, mit der Sie arbeiten. Es ist nicht immer klar, ob eine bestimmte API in einer früheren Version verfügbar war; daher wird die Arbeit mit früheren Office-Versionen nicht empfohlen.

    Hinweis

    Office hat vor Office 2003 keine PIAs veröffentlicht. Aus diesem Grund besteht die einzige Möglichkeit zum Generieren einer Interop-Assembly für Office 2002 oder früheren Versionen darin, den COM-Verweis zu importieren.

  6. Schließen Sie das Manifest-Fenster und das Assembly-Fenster.

Wiederherstellen der PIA-Abhängigkeit

  1. Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen. Erweitern Sie den Ordner Verweise, und wählen Sie Microsoft.Office.Interop.Excel aus. Drücken Sie F4, um das Fenster Eigenschaften anzuzeigen.
  2. Ändern Sie im Fenster Eigenschaften die Eigenschaft Einbetten von Interop-Typen von True zu False.
  3. Wiederholen Sie die Schritte 1 und 2 in dieser Prozedur für Microsoft.Office.Interop.Word.
  4. Drücken Sie F5, um sicherzustellen, dass das Projekt immer noch ordnungsgemäß ausgeführt wird.
  5. Wiederholen Sie die Schritte 1 bis 3 der vorherigen Prozedur, um das Assembly-Fenster zu öffnen. Beachten Sie, dass Microsoft.Office.Interop.Word und Microsoft.Office.Interop.Excel nicht mehr in der Liste der eingebetteten Assemblys sind.
  6. Doppelklicken Sie auf das Symbol MANIFEST, und führen Sie einen Bildlauf durch die Liste der referenzierten Assemblys durch. Microsoft.Office.Interop.Word und Microsoft.Office.Interop.Excel befinden sich in der Liste. Da die Anwendung auf die Excel- und Word-PIAs verweist und die Eigenschaft Einbetten von Interop-Typen auf False gesetzt ist, müssen beide Assemblys auf dem Computer des Endbenutzers vorhanden sein.
  7. Klicken Sie in Visual Studio im Menü Erstellen auf Projektmappe bereinigen, um das abgeschlossene Projekt zu bereinigen.

Siehe auch