Exemplarische Vorgehensweise: Office-Programmierung (C# und Visual Basic)Walkthrough: Office Programming (C# and Visual Basic)

Visual Studio bietet Funktionen in C# und Visual Basic, die die Microsoft Office-Programmierung verbessern.Visual Studio offers features in C# and Visual Basic that improve Microsoft Office programming. Zu nützlichen C#-Funktionen gehören benannte und optionale Argumente und Rückgabewerte des Typs dynamic.Helpful C# features include named and optional arguments and return values of type dynamic. Bei der COM-Programmierung können Sie das ref-Schlüsselwort weglassen und Zugriff auf indizierte Eigenschaften erhalten.In COM programming, you can omit the ref keyword and gain access to indexed properties. Funktionen in Visual Basic umfassen automatisch implementierte Eigenschaften, Anweisungen in Lambdaausdrücken sowie Auflistungsinitialisierer.Features in Visual Basic include auto-implemented properties, statements in lambda expressions, and collection initializers.

Beide Sprachen ermöglichen das Einbetten von Typinformationen, wodurch Assemblys bereitgestellt werden können, die mit COM-Komponenten interagieren, ohne primäre Interop-Assemblys (PIAs) auf dem Computer des Benutzers bereitzustellen.Both languages enable embedding of type information, which allows deployment of assemblies that interact with COM components without deploying primary interop assemblies (PIAs) to the user's computer. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten Assemblys.For more information, see Walkthrough: Embedding Types from Managed Assemblies.

Diese exemplarische Vorgehensweise veranschaulicht diese Funktionen im Kontext der Office-Programmierung, aber viele dieser Funktionen sind auch bei der allgemeinen Programmierung nützlich.This walkthrough demonstrates these features in the context of Office programming, but many of these features are also useful in general programming. In der exemplarischen Vorgehensweise verwenden Sie eine Excel-Add-In-Anwendung, um eine Excel-Arbeitsmappe zu erstellen.In the walkthrough, you use an Excel Add-in application to create an Excel workbook. Als nächstes erstellen Sie ein Word-Dokument, das einen Link zur Arbeitsmappe enthält.Next, you create a Word document that contains a link to the workbook. Zum Schluss sehen Sie, wie Sie die PIA-Abhängigkeit aktivieren und deaktivieren können.Finally, you see how to enable and disable the PIA dependency.

Erforderliche KomponentenPrerequisites

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.You must have Microsoft Office Excel and Microsoft Office Word installed on your computer to complete this walkthrough.

Wenn Sie ein Betriebssystem verwenden, das älter ist als Windows VistaWindows Vista, stellen Sie sicher, dass .NET Framework 2.0.NET Framework 2.0 installiert ist.If you are using an operating system that is older than Windows VistaWindows Vista, make sure that .NET Framework 2.0.NET Framework 2.0 is installed.

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.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig.The Visual Studio edition that you have and the settings that you use determine these elements. Weitere Informationen finden Sie unter Personalisieren der IDE.For more information, see Personalizing the IDE.

So richten Sie eine Excel-Add-In-Anwendung einTo set up an Excel Add-in application

  1. Starten Sie Visual Studio.Start Visual Studio.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.On the File menu, point to New, and then click Project.

  3. Erweitern Sie im Bereich Installierte Vorlagen die Option Visual Basic oder Visual C#, erweitern Sie dann Office, und klicken Sie auf die Jahreszahl der Version des Office-Produkts.In the Installed Templates pane, expand Visual Basic or Visual C#, expand Office, and then click the version year of the Office product.

  4. Klicken Sie im Bereich Vorlagen auf Excel<version > Add-in.In the Templates pane, click 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.Look at the top of the Templates pane to make sure that .NET Framework 4, or a later version, appears in the Target Framework box.

  6. Geben Sie, wenn gewünscht, einen Namen für das Projekt in das Feld Name ein.Type a name for your project in the Name box, if you want to.

  7. Klicken Sie auf OK.Click OK.

  8. Das neue Projekt wird im Projektmappen-Explorer angezeigt.The new project appears in Solution Explorer.

So fügen Sie Verweise hinzuTo add references

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und klicken Sie dann auf Verweis hinzufügen.In Solution Explorer, right-click your project's name and then click Add Reference. Das Dialogfeld Verweis hinzufügen wird angezeigt.The Add Reference dialog box appears.

  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.On the Assemblies tab, select Microsoft.Office.Interop.Excel, version <version>.0.0.0 (for a key to the Office product version numbers, see Microsoft Versions), in the Component Name list, and then hold down the CTRL key and select Microsoft.Office.Interop.Word, version <version>.0.0.0. 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).If you do not see the assemblies, you may need to ensure they are installed and displayed (see How to: Install Office Primary Interop Assemblies).

  3. Klicken Sie auf OK.Click OK.

So fügen Sie erforderliche Imports-Anweisungen oder using-Anweisungen hinzuTo add necessary Imports statements or using directives

  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.In Solution Explorer, right-click the ThisAddIn.vb or ThisAddIn.cs file and then click View Code.

  2. Fügen Sie die folgenden Imports-Anweisungen (Visual Basic) oder using-Direktiven (C#) am Anfang der Codedatei ein, wenn sie noch nicht vorhanden sind.Add the following Imports statements (Visual Basic) or using directives (C#) to the top of the code file if they are not already present.

    using System.Collections.Generic;
    using Excel = Microsoft.Office.Interop.Excel;
    using Word = Microsoft.Office.Interop.Word;
    
    Imports Microsoft.Office.Interop
    

So erstellen Sie eine Liste mit BankkontenTo create a list of bank accounts

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, klicken Sie auf Hinzufügen und dann auf Klasse.In Solution Explorer, right-click your project's name, click Add, and then click Class. Benennen Sie die Klasse "Account.vb", wenn Sie Visual Basic verwenden, oder "Account.cs", wenn Sie C# verwenden.Name the class Account.vb if you are using Visual Basic or Account.cs if you are using C#. Klicken Sie auf Hinzufügen.Click Add.

  2. Ersetzen Sie die Definition der Account-Klasse durch den folgenden Code.Replace the definition of the Account class with the following code. Die Klassendefinitionen verwenden automatisch implementierte Eigenschaften.The class definitions use auto-implemented properties. Weitere Informationen finden Sie unter Automatisch implementierte Eigenschaften.For more information, see Auto-Implemented Properties.

    class Account
    {
        public int ID { get; set; }
        public double Balance { get; set; }
    }
    
    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 oder ThisAddIn.cs ein, um eine bankAccounts-Liste mit zwei Konten zu erstellen.To create a bankAccounts list that contains two accounts, add the following code to the ThisAddIn_Startup method in ThisAddIn.vb or ThisAddIn.cs. Die Listendeklarationen verwenden Auflistungsinitialisierer.The list declarations use collection initializers. Weitere Informationen finden Sie unter Auflistungsinitialisierer.For more information, see Collection Initializers.

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

So exportieren Sie Daten nach ExcelTo export data to Excel

  1. Fügen Sie in der gleichen Datei die folgende Methode der ThisAddIn-Klasse hinzu.In the same file, add the following method to the ThisAddIn class. Die Methode richtet eine Excel-Arbeitsmappe ein, in die die Daten exportiert werden.The method sets up an Excel workbook and exports data to it.

    void DisplayInExcel(IEnumerable<Account> accounts,
               Action<Account, Excel.Range> DisplayFunc)
    {
        var excelApp = this.Application;
        // Add a new Excel workbook.
        excelApp.Workbooks.Add();
        excelApp.Visible = true;
        excelApp.Range["A1"].Value = "ID";
        excelApp.Range["B1"].Value = "Balance";
        excelApp.Range["A2"].Select();
    
        foreach (var ac in accounts)
        {
            DisplayFunc(ac, excelApp.ActiveCell);
            excelApp.ActiveCell.Offset[1, 0].Select();
        }
        // Copy the results to the Clipboard.
        excelApp.Range["A1:B3"].Copy();
    }
    
    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
    

    Bei dieser Methode werden zwei neue C#-Funktionen verwendet.Two new C# features are used in this method. Beide Funktionen existieren bereits in Visual Basic.Both of these features already exist in Visual Basic.

    • Die Methode Add hat einen optionalen Parameter zum Angeben einer bestimmten Vorlage.Method Add has an optional parameter for specifying a particular template. Optionale Parameter, die in C# 4C# 4 neu sind, ermöglichen es Ihnen, das Argument für diesen Parameter auszulassen, wenn Sie den Standardwert des Parameters verwenden möchten.Optional parameters, new in C# 4C# 4, enable you to omit the argument for that parameter if you want to use the parameter's default value. Da im vorherigen Beispiel kein Argument gesendet wurde, verwendet Add die Standardvorlage und erstellt eine neue Arbeitsmappe.Because no argument is sent in the previous example, Add uses the default template and creates a new workbook. Die entsprechende Anweisung in früheren Versionen von C# erfordert ein Platzhalterargument: excelApp.Workbooks.Add(Type.Missing).The equivalent statement in earlier versions of C# requires a placeholder argument: excelApp.Workbooks.Add(Type.Missing).

      Weitere Informationen finden Sie unter Benannte und optionale Argumente.For more information, see Named and Optional Arguments.

    • Die Eigenschaften Range und Offset des range-Objekts verwenden die Funktion Indizierte Eigenschaften.The Range and Offset properties of the Range object use the indexed properties feature. Diese Funktion ermöglicht es Ihnen, diese Eigenschaften von COM-Typen zu nutzen, indem Sie die folgende typische C#-Syntax verwenden.This feature enables you to consume these properties from COM types by using the following typical C# syntax. 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.Indexed properties also enable you to use the Value property of the Range object, eliminating the need to use the Value2 property. Die Value-Eigenschaft ist indiziert, der Index ist jedoch optional.The Value property is indexed, but the index is optional. Optionale Argumente und indizierte Eigenschaften arbeiten im folgenden Beispiel zusammen.Optional arguments and indexed properties work together in the following example.

      // Visual C# 2010 provides indexed properties for COM programming.
      excelApp.Range["A1"].Value = "ID";
      excelApp.ActiveCell.Offset[1, 0].Select();
      

      In früheren Versionen der Sprache ist die folgende spezielle Syntax erforderlich.In earlier versions of the language, the following special syntax is required.

      // In Visual C# 2008, you cannot access the Range, Offset, and Value
      // properties directly.
      excelApp.get_Range("A1").Value2 = "ID";
      excelApp.ActiveCell.get_Offset(1, 0).Select();
      

      Sie können nicht Ihre eigenen indizierten Eigenschaften erstellen.You cannot create indexed properties of your own. Die Funktion unterstützt nur die Nutzung vorhandener indizierter Eigenschaften.The feature only supports consumption of existing indexed properties.

      Weitere Informationen finden Sie unter Vorgehensweise: Indizierte Eigenschaften bei der COM-Interop-Programmierung.For more information, see How to: Use Indexed Properties in COM Interop Programming.

  2. Fügen Sie den folgenden Code am Ende von DisplayInExcel hinzu, um die Spaltenbreite an den Inhalt anzupassen.Add the following code at the end of DisplayInExcel to adjust the column widths to fit the content.

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

    Diese Ergänzungen veranschaulichen eine weitere Funktion in C#: die Behandlung von Object-Werten, die von COM-Hosts wie z.B. Office zurückgegeben wurden, als wären sie vom Typ dynamic.These additions demonstrate another feature in C#: treating Object values returned from COM hosts such as Office as if they have type dynamic. Dies geschieht automatisch, wenn Einbetten von Interop-Typen auf den Standardwert True festgelegt ist oder gleichermaßen wenn die /link-Compileroption auf die Assembly verweist.This happens automatically when Embed Interop Types is set to its default value, True, or, equivalently, when the assembly is referenced by the /link compiler option. Der Typ dynamic ermöglicht eine späte Bindung, bereits in Visual Basic verfügbar, und vermeidet die in Visual C# 2008 und in früheren Sprachversionen erforderliche explizite Umwandlung.Type dynamic allows late binding, already available in Visual Basic, and avoids the explicit casting required in Visual C# 2008 and earlier versions of the language.

    excelApp.Columns[1] gibt z.B.Object zurück, und AutoFit ist eine Range-Methode von Excel.For example, excelApp.Columns[1] returns an Object, and AutoFit is an Excel Range method. Ohne dynamic müssen Sie das von excelApp.Columns[1] zurückgegebene Objekt als eine Instanz von Range umwandeln, bevor Sie die Methode AutoFit aufrufen.Without dynamic, you must cast the object returned by excelApp.Columns[1] as an instance of Range before calling method AutoFit.

    // Casting is required in Visual C# 2008.
    ((Excel.Range)excelApp.Columns[1]).AutoFit();
    
    // Casting is not required in Visual C# 2010.
    excelApp.Columns[1].AutoFit();
    

    Weitere Informationen zum Einbetten von Interop-Typen 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 Thema.For more information about embedding interop types, see procedures "To find the PIA reference" and "To restore the PIA dependency" later in this topic. Weitere Informationen zu dynamic finden Sie unter dynamic oder Verwenden von dynamischen Typen.For more information about dynamic, see dynamic or Using Type dynamic.

So rufen Sie DisplayInExcel aufTo invoke DisplayInExcel

  1. Fügen Sie den folgenden Code am Ende der ThisAddIn_StartUp-Methode hinzu.Add the following code at the end of the ThisAddIn_StartUp method. Der Aufruf von DisplayInExcel enthält zwei Argumente.The call to DisplayInExcel contains two arguments. Das erste Argument ist der Name der Liste mit Konten, die verarbeitet werden sollen.The first argument is the name of the list of accounts to be processed. Das zweite Argument ist ein mehrzeiliger Lambda-Ausdruck, der definiert, wie die Daten verarbeitet werden.The second argument is a multiline lambda expression that defines how the data is to be processed. 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.The ID and balance values for each account are displayed in adjacent cells, and the row is displayed in red if the balance is less than zero. Weitere Informationen finden Sie unter Lambdaausdrücke.For more information, see Lambda Expressions.

    DisplayInExcel(bankAccounts, (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)
        {
            cell.Interior.Color = 255;
            cell.Offset[0, 1].Interior.Color = 255;
        }
    });
    
    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.To run the program, press F5. Ein Excel-Arbeitsblatt wird mit den Kontendaten angezeigt.An Excel worksheet appears that contains the data from the accounts.

So fügen Sie ein Word-Dokument hinzuTo add a Word document

  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.Add the following code at the end of the ThisAddIn_StartUp method to create a Word document that contains a link to the Excel workbook.

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

    Dieser Code veranschaulicht mehrere der neuen Funktionen in C#: die Möglichkeit, das ref-Schlüsselwort in der COM-Programmierung auszulassen, benannte Argumente sowie optionale Argumente.This code demonstrates several of the new features in C#: the ability to omit the ref keyword in COM programming, named arguments, and optional arguments. Diese Funktionen sind bereits in Visual Basic vorhanden.These features already exist in Visual Basic. Die Methode PasteSpecial verfügt über sieben Parameter, die als optionale Verweisparameter definiert sind.The PasteSpecial method has seven parameters, all of which are defined as optional reference parameters. 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.Named and optional arguments enable you to designate the parameters you want to access by name and to send arguments to only those parameters. 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).In this example, arguments are sent to indicate that a link to the workbook on the Clipboard should be created (parameter Link) and that the link is to be displayed in the Word document as an icon (parameter DisplayAsIcon). Visual C# ermöglicht auch das Weglassen des ref-Schlüsselworts für diese Argumente.Visual C# also enables you to omit the ref keyword for these arguments.

So führen Sie die Anwendung ausTo run the application

  1. Drücken Sie F5, um die Anwendung auszuführen.Press F5 to run the application. Excel wird gestartet und zeigt eine Tabelle mit den Informationen der beiden Konten in bankAccounts an.Excel starts and displays a table that contains the information from the two accounts in bankAccounts. Anschließend wird ein Word-Dokument angezeigt, das einen Link zur Excel-Tabelle enthält.Then a Word document appears that contains a link to the Excel table.

So bereinigen Sie das abgeschlossene ProjektTo clean up the completed project

  1. Klicken Sie in Visual Studio auf Projektmappe bereinigen im Menü Erstellen.In Visual Studio, click Clean Solution on the Build menu. Andernfalls wird das Add-In jedes Mal ausgeführt, wenn Sie Excel auf Ihrem Computer öffnen.Otherwise, the add-in will run every time that you open Excel on your computer.

So suchen Sie den PIA-VerweisTo find the PIA reference

  1. Führen Sie die Anwendung erneut aus, klicken Sie jedoch nicht auf Projektmappe bereinigen.Run the application again, but do not click Clean Solution.

  2. Wählen Sie Start aus.Select the Start. Suchen Sie Microsoft Visual Studio <version> und öffnen Sie eine Developer-Eingabeaufforderung.Locate Microsoft Visual Studio <version> and open a developer command prompt.

  3. Geben Sie im Fenster „Visual Studio-Eingabeaufforderung“ ildasm ein, und drücken Sie dann die EINGABETASTE.Type ildasm in the Visual Studio Command Prompt window, and then press ENTER. Das IL DASM-Fenster wird angezeigt.The IL DASM window appears.

  4. Klicken Sie im IL DASM-Fenster im Menü Datei auf Datei > Öffnen.On the File menu in the IL DASM window, select File > Open. Doppelklicken Sie auf Visual Studio <version> und dann noch einmal auf Projekte.Double-click Visual Studio <version>, and then double-click Projects. Öffnen Sie den Ordner für das Projekt, und suchen Sie im Ordner „bin/Debug“ nach der Datei Projektname.dll.Open the folder for your project, and look in the bin/Debug folder for your project name.dll. Doppelklicken Sie auf Projektname.dll.Double-click your project name.dll. In einem neuen Fenster werden die Attribute Ihres Projekts sowie Verweise auf andere Module und Assemblys angezeigt.A new window displays your project's attributes, in addition to references to other modules and assemblies. Beachten Sie, dass die Namespaces Microsoft.Office.Interop.Excel und Microsoft.Office.Interop.Word in der Assembly enthalten sind.Note that namespaces Microsoft.Office.Interop.Excel and Microsoft.Office.Interop.Word are included in the assembly. Standardmäßig importiert der Compiler in Visual Studio die benötigten Typen aus einer referenzierten PIA in Ihre Assembly.By default in Visual Studio, the compiler imports the types you need from a referenced PIA into your assembly.

    Weitere Informationen finden Sie unter Vorgehensweise: Ansichtsassemblyinhalt.For more information, see How to: View Assembly Contents.

  5. Doppelklicken Sie auf das Symbol MANIFEST.Double-click the MANIFEST icon. Es wird ein Fenster angezeigt, das eine Liste von Assemblys enthält, die vom Projekt referenzierte Elemente enthalten.A window appears that contains a list of assemblies that contain items referenced by the project. Microsoft.Office.Interop.Excel und Microsoft.Office.Interop.Word sind nicht in der Liste enthalten.Microsoft.Office.Interop.Excel and Microsoft.Office.Interop.Word are not included in the list. Da die Typen, die das Projekt benötigt, in die Assembly importiert wurden, sind keine Verweise auf eine PIA erforderlich.Because the types your project needs have been imported into your assembly, references to a PIA are not required. Dadurch wird die Bereitstellung vereinfacht.This makes deployment easier. 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.The PIAs do not have to be present on the user's computer, and because an application does not require deployment of a specific version of a PIA, applications can be designed to work with multiple versions of Office, provided that the necessary APIs exist in all versions.

    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.Because deployment of PIAs is no longer necessary, you can create an application in advanced scenarios that works with multiple versions of Office, including earlier versions. Dies funktioniert jedoch nur, wenn Ihr Code keine APIs verwendet, die nicht in der Version von Office verfügbar sind, mit der Sie arbeiten.However, this works only if your code does not use any APIs that are not available in the version of Office you are working with. 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.It is not always clear whether a particular API was available in an earlier version, and for that reason working with earlier versions of Office is not recommended.

    Hinweis

    Office hat vor Office 2003 keine PIAs veröffentlicht.Office did not publish PIAs before Office 2003. 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.Therefore, the only way to generate an interop assembly for Office 2002 or earlier versions is by importing the COM reference.

  6. Schließen Sie das Manifest-Fenster und das Assembly-Fenster.Close the manifest window and the assembly window.

So stellen Sie die PIA-Abhängigkeit wieder herTo restore the PIA dependency

  1. Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen.In Solution Explorer, click the Show All Files button. Erweitern Sie den Ordner Verweise, und wählen Sie Microsoft.Office.Interop.Excel aus.Expand the References folder and select Microsoft.Office.Interop.Excel. Drücken Sie F4, um das Fenster Eigenschaften anzuzeigen.Press F4 to display the Properties window.

  2. Ändern Sie im Fenster Eigenschaften die Eigenschaft Einbetten von Interop-Typen von True zu False.In the Properties window, change the Embed Interop Types property from True to False.

  3. Wiederholen Sie die Schritte 1 und 2 in dieser Prozedur für Microsoft.Office.Interop.Word.Repeat steps 1 and 2 in this procedure for Microsoft.Office.Interop.Word.

  4. Kommentieren Sie in C# die beiden Aufrufe von Autofit am Ende der DisplayInExcel-Methode aus.In C#, comment out the two calls to Autofit at the end of the DisplayInExcel method.

  5. Drücken Sie F5, um sicherzustellen, dass das Projekt immer noch ordnungsgemäß ausgeführt wird.Press F5 to verify that the project still runs correctly.

  6. Wiederholen Sie die Schritte 1 bis 3 der vorherigen Prozedur, um das Assembly-Fenster zu öffnen.Repeat steps 1-3 from the previous procedure to open the assembly window. Beachten Sie, dass Microsoft.Office.Interop.Word und Microsoft.Office.Interop.Excel nicht mehr in der Liste der eingebetteten Assemblys sind.Notice that Microsoft.Office.Interop.Word and Microsoft.Office.Interop.Excel are no longer in the list of embedded assemblies.

  7. Doppelklicken Sie auf das Symbol MANIFEST, und führen Sie einen Bildlauf durch die Liste der referenzierten Assemblys durch.Double-click the MANIFEST icon and scroll through the list of referenced assemblies. Microsoft.Office.Interop.Word und Microsoft.Office.Interop.Excel befinden sich in der Liste.Both Microsoft.Office.Interop.Word and Microsoft.Office.Interop.Excel are in the list. 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.Because the application references the Excel and Word PIAs, and the Embed Interop Types property is set to False, both assemblies must exist on the end user's computer.

  8. Klicken Sie in Visual Studio im Menü Erstellen auf Projektmappe bereinigen, um das abgeschlossene Projekt zu bereinigen.In Visual Studio, click Clean Solution on the Build menu to clean up the completed project.

Siehe auchSee Also

Automatisch implementierte Eigenschaften (Visual Basic)Auto-Implemented Properties (Visual Basic)
Automatisch implementierte Eigenschaften (C#)Auto-Implemented Properties (C#)
AuflistungsinitialisiererCollection Initializers
Objekt- und AuflistungsinitialisiererObject and Collection Initializers
Optionale ParameterOptional Parameters
Übergeben von Argumenten nach Position und NamePassing Arguments by Position and by Name
Benannte und optionale ArgumenteNamed and Optional Arguments
Frühes und spätes BindenEarly and Late Binding
dynamicdynamic
Verwenden von dynamischen TypenUsing Type dynamic
Lambdaausdrücke (Visual Basic)Lambda Expressions (Visual Basic)
Lambdaausdrücke (C#)Lambda Expressions (C#)
Gewusst wie: Indizierte Eigenschaften bei der COM-Interop-ProgrammierungHow to: Use Indexed Properties in COM Interop Programming
Exemplarische Vorgehensweise: Einbetten von Typinformationen aus Microsoft Office-AssemblysWalkthrough: Embedding Type Information from Microsoft Office Assemblies
Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten AssemblysWalkthrough: Embedding Types from Managed Assemblies
Exemplarische Vorgehensweise: Erstellen des ersten VSTO-Add-Ins für ExcelWalkthrough: Creating Your First VSTO Add-in for Excel
COM-InteropCOM Interop
InteroperabilitätInteroperability