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.
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
Starten Sie Visual Studio.
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
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.
Klicken Sie im Bereich Vorlagen auf Excel <Version> Add-in.
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.
Geben Sie, wenn gewünscht, einen Namen für das Projekt in das Feld Name ein.
Klicken Sie auf OK.
Das neue Projekt wird im Projektmappen-Explorer angezeigt.
Hinzufügen von Verweisen
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.
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).Klicken Sie auf OK.
Hinzufügen erforderlicher Imports- oder using-Anweisungen
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei ThisAddIn.vb oder ThisAddIn.cs, und klicken Sie dann auf Code anzeigen.
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
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.
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
Fügen Sie den folgenden Code in die
ThisAddIn_Startup
-Methode in ThisAddIn.vb ein, um einebankAccounts
-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
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
undOffset
des range-Objekts verwenden die Funktion Indizierte Eigenschaften. Indizierte Eigenschaften ermöglichen es Ihnen außerdem, dieValue
-Eigenschaft desRange
-Objekts zu verwenden, sodass Sie dieValue2
-Eigenschaft nicht mehr verwenden müssen. DieValue
-Eigenschaft ist indiziert, der Index ist jedoch optional. Optionale Argumente und indizierte Eigenschaften arbeiten im folgenden Beispiel zusammen.
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
Fügen Sie den folgenden Code am Ende der
ThisAddIn_StartUp
-Methode hinzu. Der Aufruf vonDisplayInExcel
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. DieID
- undbalance
-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)
Drücken Sie F5, um das Programm auszuführen. Ein Excel-Arbeitsblatt wird mit den Kontendaten angezeigt.
Hinzufügen eines Word-Dokuments
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 (ParameterDisplayAsIcon
).
Ausführen der Anwendung
- 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
- 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
Führen Sie die Anwendung erneut aus, klicken Sie jedoch nicht auf Projektmappe bereinigen.
Wählen Sie Start aus. Suchen Sie Microsoft Visual Studio <Version> und öffnen Sie eine Entwicklereingabeaufforderung.
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.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
undMicrosoft.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).
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
undMicrosoft.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.
Schließen Sie das Manifest-Fenster und das Assembly-Fenster.
Wiederherstellen der PIA-Abhängigkeit
- 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.
- Ändern Sie im Fenster Eigenschaften die Eigenschaft Einbetten von Interop-Typen von True zu False.
- Wiederholen Sie die Schritte 1 und 2 in dieser Prozedur für
Microsoft.Office.Interop.Word
. - Drücken Sie F5, um sicherzustellen, dass das Projekt immer noch ordnungsgemäß ausgeführt wird.
- Wiederholen Sie die Schritte 1 bis 3 der vorherigen Prozedur, um das Assembly-Fenster zu öffnen. Beachten Sie, dass
Microsoft.Office.Interop.Word
undMicrosoft.Office.Interop.Excel
nicht mehr in der Liste der eingebetteten Assemblys sind. - Doppelklicken Sie auf das Symbol MANIFEST, und führen Sie einen Bildlauf durch die Liste der referenzierten Assemblys durch.
Microsoft.Office.Interop.Word
undMicrosoft.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. - Klicken Sie in Visual Studio im Menü Erstellen auf Projektmappe bereinigen, um das abgeschlossene Projekt zu bereinigen.
Siehe auch
- Automatisch implementierte Eigenschaften (Visual Basic)
- Auflistungsinitialisierer
- Optionale Parameter
- Übergeben von Argumenten nach Position und Name
- Frühes und spätes Binden
- Lambda-Ausdrücke
- Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten Assemblys in Visual Studio
- Exemplarische Vorgehensweise: Creating Your First VSTO Add-in for Excel (Exemplarische Vorgehensweise: Erstellen Ihres ersten VSTO-Add-Ins für Excel)
- COM-Interop