Aktualisieren von Visual Studio Tools for Office, Version 2003

Aktualisiert: November 2007

Nach der Aktualisierung von Visual Studio-Tools für Office, Version 2003 auf Microsoft Visual Studio 2005-Tools für Microsoft Office System (Visual Studio Tools for Office) müssen einige Aktualisierungsschritte für Projekte auf Dokumentebene manuell ausgeführt werden.

Im neuen Projektsystem wurden erhebliche Änderungen an den Projektcodevorlagen vorgenommen. Das geupdatete Projekt weist die neue Projektstruktur auf, der Code verbleibt jedoch in der ursprünglichen Codedatei, die auf der früheren Projektcodevorlage basiert. Damit die Projektmappe nach dem Update direkt ausgeführt werden kann, instantiiert die neue Projektklasse die alte importierte Klasse (die Originalklasse, deren Name standardmäßig OfficeCodeBehind lautet). Um das Update abzuschließen, müssen Sie den Code entsprechend der Beschreibung in diesem Thema aus der alten OfficeCodeBehind-Klasse in die neue Dokument-, Arbeitsmappen- oder Arbeitsblattklasse verschieben.

Neues Projektsystem und neue Projektstruktur

Das Projektsystem in Visual Studio-Tools für Office, Version 2003 verfügte über eine einzige Hauptklassendatei für den Code. Im neuen Projektsystem wird das Dokument oder die Arbeitsmappe durch eine Containerstruktur im Projektmappen-Explorer dargestellt. Die Klassendateien für den Code sind unter der Containerstruktur abgelegt. Unter diesen Klassendateien befinden sich versteckte Dateien, die den von Visual Studio Tools for Office generierten Code enthalten. Der Code in den versteckten Dateien sollte nach Möglichkeit nicht geändert werden, da diese während der Entwicklung möglicherweise neu generiert werden, wodurch Änderungen verloren gehen.

Excel-Arbeitsmappenprojekte und Excel-Vorlagenprojekte

Excel-Arbeitsmappenprojekte und Excel-Vorlagenprojekte enthalten nun eine eigene Klassendatei für jedes Arbeitsblatt und eine Klassendatei für die Arbeitsmappe als Ganzes. Arbeitsblatt-spezifischer Code, z. B. Code, der auf ein Steuerelement in einem Arbeitsblatt reagiert, sollte in die Arbeitsblattklasse eingegeben werden. Für neue Dokumente lauten die Namen dieser Klassen standardmäßig Sheet1.vb oder Sheet1.cs, Sheet2.vb oder Sheet2.cs usw. Code, der sich auf die Arbeitsmappe im Allgemeinen auswirkt, z. B. das Open-Ereignis der Arbeitsmappe, das BeforeClose-Ereignis und Aktionsbereichscode, sollte in die Arbeitsmappenklasse eingefügt werden. Der Name dieser Klasse lautet standardmäßig ThisWorkbook.vb oder ThisWorkbook.cs.

Word-Dokumentprojekte und Word-Vorlagenprojekte

Word-Dokumentprojekte und Word-Vorlagenprojekte verfügen über eine Codedatei, die den gesamten das Dokument betreffenden Code enthält. Der Name dieser Klasse lautet standardmäßig ThisDocument.vb oder ThisDocument.cs.

Weitere Informationen finden Sie unter Office-Projektvorlagen.

Updateprozess

Wenn Sie ein Update für das Projekt durchführen, werden in Visual Studio folgende Schritte ausgeführt:

  • Das Projekt wird entsprechend dem neuen Dateiformat und der neuen Projektstruktur geupdatet.

  • Das vorhandene Dokument wird in den neuen Projektordner kopiert.

  • Die benutzerdefinierten Dokumenteigenschaften _AssemblyName0 und _AssemblyLocation0 werden entfernt, um die Ausführung verwalteter Codeerweiterungen zu verhindern (diese Eigenschaften werden beim Erstellen des Projekts wieder hinzugefügt).

  • Die ursprüngliche Hauptcodedatei wird hinzugefügt, wobei erläuternde Kommentare eingefügt werden, und der Name der Datei wird von <Dokumentname> zu <Dokumentname> (alt) geändert.

  • Alle Dateien des ursprünglichen Projekts werden zum neuen Projekt hinzugefügt.

  • Alle vorhandenen Verweise werden zum neuen Projekt hinzugefügt.

Der vorhandene Code wird nicht in die neuen Klassen migriert. Stattdessen wird die _Startup-Methode der alten Hauptklasse von der Startup-Methode der neuen Hauptklasse aufgerufen. Hierdurch wird die alte Klasse instantiiert, sodass die Projektmappe genauso ausgeführt wird wie zuvor in der alten Version.

In <Dokumentname> (alt) lautet der Standardname der Klasse OfficeCodeBehind. In einem geupdateten Word-Projekt lautet der Standardname der Hauptklasse ThisDocument. In einem geupdateten Excel-Projekt lauten die Standardnamen der Hauptklassen ThisWorkbook für die Klasse, die auf Arbeitsmappenebene ausgeführten Code enthält, und Sheet1, Sheet2 usw. für auf der Arbeitsblattebene ausgeführten Code.

Um das Update abzuschließen, müssen Sie folgende Schritte ausführen:

  • Verschieben Sie den Code manuell aus der alten Klasse (mit dem Standardnamen OfficeCodeBehind) in die neuen Dokument-, Arbeitsmappen- und Arbeitsblattklassen, und löschen Sie anschließend die alte Codedatei. Wenn Sie den vorhandenen Code jedoch einfach unverändert beibehalten möchten, können Sie die alte Codedatei behalten und den Code mit einem Aufruf aus den neuen Klassen ausführen. Sämtlicher von den Tools hinzugefügter neuer Code wird in die neuen Klassen eingefügt.

  • Aktualisieren Sie den Code wie unten beschrieben.

  • Ersetzen Sie alle ActiveX-Steuerelemente durch verwaltete Steuerelemente.

Optional können Sie auch folgende Schritte ausführen:

  • Gestalten Sie den C#-Code um.

Verschieben von Code aus der alten Hauptklasse in die neue Klasse

Es wird empfohlen, den Code aus der alten Klasse in die neuen Klassen zu verschieben, damit Sie die Tools von Visual Studio nutzen können. Die Tools verwenden beim Generieren von Code automatisch die neuen Klassen. Wenn Sie einem Dokument zum Beispiel eine Schaltfläche hinzufügen und darauf doppelklicken, um den Code abzurufen, wird der neuen Klasse der Standardereignishandler hinzugefügt.

Überlegen Sie beim Updaten einer Excel-Projektmappe genau, in welche Klasse die einzelnen Methoden verschoben werden sollen. Wenn sich die Methode auf die Arbeitsmappe im Allgemeinen und/oder alle Arbeitsblätter bezieht, sollten Sie den Code in die ThisWorkbook-Klasse einfügen. Wenn sich der Code auf ein einzelnes Arbeitsblatt bezieht, wie zum Beispiel der Code für ein Steuerelement in einem Arbeitsblatt, gehört der Code in die entsprechende Arbeitsblattklasse.

Um Ihnen den Einstieg zu erleichtern, enthält der generierte Code in der neuen ThisDocument-Klasse oder ThisWorkbook-Klasse kommentierte Platzhaltermethoden. Sie können diese Methoden auf zwei Weisen verwenden:

  • Übertragen Sie den gesamten Code aus der alten Klasse in die neuen Klassen, die in der geupdateten Projektmappe zur Verfügung gestellt werden.

  • Schreiben Sie Code in die neuen Methoden, um die alten Methoden in der alten Klasse aufzurufen. Damit dies funktioniert, müssen Sie die Methoden in der alten Klasse so ändern, dass sie nicht mehr als privat definiert sind.

Beispiele

Nachfolgend sind Beispiele für Platzhaltermethoden aufgeführt, die die alte Klasse instantiieren und Methoden in dieser Klasse aufrufen:

Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Startup

    OldCode = New OfficeCodeBehind()
    OldCode._Startup(Me.ThisApplication, Me)
End Sub

''Private Sub ThisDocument_Open() Handles MyBase.Open
''    OldCode.ThisDocument_Open()
''End Sub
''
''Private Sub ThisDocument_Close() Handles MyBase.CloseEvent
''    OldCode.ThisDocument_Close()
''End Sub
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
    OldCode = new OfficeCodeBehind();
    OldCode._Startup(this.Application, this);
}

//private void ThisDocument_Open()
//{
//    OldCode.ThisDocument_Open()
//}
//
//private void ThisDocument_Close(ref bool Cancel)
//{
//    OldCode.ThisDocument_Close(ref Cancel)
//}

Nachdem der gesamte Code in die neuen Klassen verschoben wurde, entfernen Sie die alte Klasse.

Aktualisieren des Codes

Es sind eventuelle einige Änderungen am Code erforderlich, wenn der vorhandene Code auf Application verweist, bestimmte Ereignisse oder Methoden aufruft oder vom Open-Ereignis abhängig ist.

Qualifizieren einer Anwendung

In Visual Studio-Tools für Office, Version 2003 verwies die nicht qualifizierte Verwendung von Application auf denSystem.Windows.Forms.Application-Typ. In Visual Studio Tools for Office wird auf das Word- oder Excel-Application-Objekt verwiesen. Dies bedeutet, dass Sie alle nicht qualifizierten Verweise auf Application mit dem vollqualifizierten System.Windows.Forms.Application-Namespace aktualisieren müssen, um die gleichen Ergebnisse zu erzielen. Wenn Sie zum Beispiel den Code Application.Run(New Form1) zum Öffnen eines Formulars verwenden, müssen Sie ihn wie folgt umschreiben: System.Windows.Forms.Application.Run(New Form1).

Umbenennen von Ereignissen und Methoden

Word und Excel verfügen über einige Ereignisse, die die gleichen Namen wie Methoden im Objektmodell haben. Beispielsweise verfügen Word-Dokumente über ein Schließen-Ereignis und eine Schließen-Methode. Im Visual Studio Tools for Office-Projektmappencode müssen sich die Namen der Member unterscheiden, daher müssen Sie alle vorhandenen Verweise auf die folgenden Member durch die neuen Namen ersetzen.

Word.Document

  • Verwenden Sie für das Close-Ereignis CloseEvent.

  • Verwenden Sie für das Sync-Ereignis SyncEvent.

Excel.Worksheet

Excel.Workbook

Excel.Chart

Behandeln des offenen Ereignisses

Aktualisierte Projekte lösen nicht das Open-Ereignis für Excel-Arbeitsmappen bzw. das Open-Ereignis für Word-Dokumente aus. Wenn der Code vom Open-Ereignis abhängig ist, sollten Sie diesen in den ThisWorkbook_Open()-Ereignishandler in der neuen ThisWorkbook-Klasse für Excel-Arbeitsmappen oder in den ThisDocument_Open()-Ereignishandler in der neuen ThisDocument-Klasse für Word-Dokumente verschieben. Sie können auch den Open-Ereignishandler der _Startup-Methode der ursprünglichen OfficeCodeBehind-Klasse aufrufen.

Ersetzen von ActiveX-Steuerelementen durch verwaltete Steuerelemente

Wenn Sie im Dokument oder der Arbeitsmappe ActiveX-Steuerelemente verwendet haben, sollten Sie diese löschen und durch verwaltete Steuerelemente aus der Toolbox von Visual Studio ersetzen. Für ActiveX-Steuerelemente gelten in den neuen Visual Studio Tools for Office-Projekten einige Einschränkungen. So können zum Beispiel keine Daten an ActiveX-Steuerelemente gebunden werden, und es muss eine bestimmte Interopassembly verwendet werden, um Code für sie ausführen zu können. Aus diesem Grund werden ActiveX-Steuerelemente für die Verwendung in neuen Visual Studio Tools for Office-Projekten nicht unterstützt.

Umgestalten des Codes (nur C#)

In Visual Studio stehen Tools zum Organisieren und Anordnen von C#-Code zur Verfügung. Dieser Prozess wird als Umgestaltung bezeichnet. Wenn die Codedatei im Code-Editor geöffnet ist, wird das Menü Umgestalten mit diesen Tools zu Visual Studio hinzugefügt. Weitere Informationen finden Sie unter Umgestaltung.

Siehe auch

Aufgaben

Gewusst wie: Aktualisieren von Projektmappen in Visual Studio Tools for Office

Konzepte

Übersicht über Assemblys in Office-Projektmappen

Aktualisieren und Migrieren von Office-Projektmappen