Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
Visual Studio 2005
 Problembehandlung in Visual Studio ...
Alle reduzieren/Alle erweitern Alle reduzieren
Diese Seite ist spezifisch für
Microsoft Visual Studio 2005/.Net Framework 2.0

Andere Versionen stehen ebenfalls zur Verfügung für:
Visual Studio Tools for the Microsoft Office System
Problembehandlung in Visual Studio zur Entwurfszeit

Die folgenden Probleme können auftreten, während Sie Projektmappen mit Microsoft Visual Studio 2005-Tools für Microsoft Office System entwickeln.

Visual Studio speichert Projektmappen in einem temporären Ordner zwischen, bis sie gespeichert werden. Visual Studio-Tools für Office bewirkt durch eine automatische Änderung der Sicherheitsrichtlinien, dass die Projektmappe am temporären Speicherort Vertrauenswürdigkeit erhält. Diese Änderungen werden vorgenommen, wenn die Projektmappe erstellt wird. Wenn Sie an der Projektmappe keine Änderungen mehr vornehmen, bevor Sie sie in einem permanenten Ordner speichern, erstellt Visual Studio die Projektmappe nicht neu, wenn Sie sie von ihrem neuen Speicherort ausführen. Deshalb wird die Projektmappe am neuen Speicherort nicht automatisch als vertrauenswürdig eingestuft, und sie lässt sich nicht ausführen.

Wenn ein Fehler auftritt, nachdem Sie eine neue Projektmappe an einem permanenten Speicherort gespeichert haben, öffnen Sie das Menü Erstellen, und klicken Sie auf Projektmappe neu erstellen. Dadurch erstellt Visual Studio die Projektmappe neu, auch wenn Sie keine Änderungen vorgenommen haben. Visual Studio-Tools für Office nimmt dann für den neuen Speicherort die entsprechenden Änderungen in den Sicherheitsrichtlinien vor.

Office-Objekte, die eine Methode und ein Ereignis mit demselben Namen haben, wurden in den primären Interop-Assemblys für Office in zwei Objekte aufgespalten: ein Kernobjekt mit allen Eigenschaften und Methoden und ein Ereignisobjekt, das Ereignisse enthält, deren Name zu einem Konflikt mit einer Eigenschaft oder einer Methode führt. Diese Ereignisobjekte verwenden die Namenskonvention <Objektname>_Event. Wenn Sie ein erwartetes Ereignis nicht sehen, wandeln Sie es in die <Objektname>_Event-Schnittstelle um.

Es gibt zum Beispiel ein ActivateEvent-Ereignis und eine Activate-Methode für ein Workbook. Um dieses Ereignis zu behandeln, verwenden Sie WorkbookEvents_Event statt Workbook.

Erstellen Sie im Deklarationsabschnitt Membervariablen:

C#
private Excel.Workbook wkbk;
private Excel.WorkbookEvents_Event wbEvents;
private Excel.WorkbookEvents_ActivateEventHandler activateEvent;

Verbinden Sie das Ereignis in _Startup:

C#
wbEvents = (Excel.WorkbookEvents_Event)wkbk;
activateEvent = new Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_Activate);
wbEvents.Activate += activateEvent;

Schreiben Sie einen Ereignishandler:

C#
private void ThisWorkbook_Activate()
{
    // Your code goes here.
} 

Sie müssen in WorkbookEvents_Event umwandeln, da Excel.Workbook.Activate die Activate-Methode und nicht das ActivateEvent-Ereignis zurückgibt.

Alternativ können Sie das Objekt in seine entsprechende Ereignisschnittstelle in Startup umwandeln:

C#
((Excel.WorkbookEvents_Event)(Globals.ThisWorkbook.InnerObject)).Activate += 
    new Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_Activate); 

Schreiben Sie dann einen Ereignishandler für den Code:

C#
private void ThisWorkbook_Activate()
{
    // Your code goes here.
} 

Einige Klassennamen wie Application kommen in mehreren Namespaces vor, z. B. in Microsoft.Office und System.Windows.Forms. Aus diesem Grund enthält die Imports/using-Anweisung am Anfang der Projektvorlage eine verkürzte Qualifizierungskonstante, z. B.:

Visual Basic
Imports Word = Microsoft.Office.Interop.Word
C#
using Word = Microsoft.Office.Interop.Word;

Bei dieser Verwendung der Imports/using-Anweisung müssen Sie anhand des Word- oder Excel-Qualifizierers eine Unterscheidung zwischen den Verweisen auf Office-Klassen vornehmen. Beispiel:

Visual Basic
Dim doc As Word.Document
C#
Word.Document doc;

Bei Verwendung einer Deklaration ohne Qualifizierer werden Fehlermeldungen ausgegeben. Beispiel:

Visual Basic
Dim doc As Document  ' Class is ambiguous
C#
Document doc;  // Class is ambiguous

Obwohl Sie den Word- oder Excel-Namespace importiert haben und über Zugriff auf alle Klassen darin verfügen, müssen Sie alle Typen mit Word oder Excel vollqualifizieren, um die Zweideutigkeit beim Namespace auszuräumen.

Wenn Sie ein neues Visual Studio-Tools für Office-Projekt auf Basis eines Dokuments aus einem bestehenden Projekt erstellen, werden die Eigenschaften für Steuerelemente auf dem Dokument nicht in das neue Projekt kopiert. Sie müssen die Eigenschaften für alle vorher bestehenden Steuerelemente manuell zurücksetzen. Alternativ können Sie die Steuerelementeigenschaften übernehmen, indem Sie statt eines neuen Projekts eine Kopie des bestehenden Projekts erstellen oder indem Sie das bestehende Projekt in die neue Projektmappe (im Designer) laden und die Steuerelemente aus dem bestehenden Dokument kopieren und in das neue Dokument einfügen.

Wenn Sie Steuerelemente auf einem Dokument oder einem Arbeitsblatt gruppieren, erkennt Visual Studio-Tools für Office die Steuerelemente nicht mehr. Auf gruppierte Steuerelemente kann im Eigenschaftenfenster nicht zugegriffen werden, und sie werden auf dem Dokument oder Arbeitsblatt als schwarze Rechtecke angezeigt. Sie müssen die Gruppierung der Steuerelemente auflösen, um ihre Funktionalität wiederherzustellen.

Wenn Sie eine Word-Vorlage im Visual Studio-Designer öffnen, sind Steuerelemente in der Vorlage, die nicht in den Textfluss eingefügt wurden, eventuell nicht sichtbar. Dies ist darauf zurückzuführen, dass Word-Vorlagen in Visual Studio in der Normalansicht geöffnet werden. Um die Steuerelemente anzuzeigen, klicken Sie auf das Menü Ansicht, zeigen Sie auf Microsoft Office Word-Ansicht, und klicken Sie dann auf Seitenlayout.

DataSet-Objekte, die unter Verwendung von Visual Basic erstellt wurden und die als Cached und als WithEvents gekennzeichnet sind (einschließlich der DataSet-Objekte, die aus dem Datenquellenfenster oder aus der Toolbox gezogen wurden und deren CacheInDocument-Eigenschaft auf True festgelegt ist), sind mit einem dem Namen vorangestellten Unterstrich im Cache enthalten. Wenn Sie beispielsweise ein DataSet mit dem Namen Customers erstellen, lautet der CachedDataItem-Name im Cache _Customers. Wenn Sie für den Zugriff auf dieses zwischengespeicherte Element ServerDocument verwenden, müssen Sie _Customers anstelle von Customers angeben.

In Office-Projekten sind Excel und Word reservierte Schlüsselwörter.

Wenn Sie ein NamedRange-Steuerelement aus einem Arbeitsblatt löschen, das nicht das aktive Arbeitsblatt im Designer ist, wird der automatisch generierte Code möglicherweise nicht aus dem Projekt entfernt, und es können Compilerfehler auftreten. Um sicherzustellen, dass der Code entfernt wird, müssen Sie vor dem Löschen des Steuerelements immer das Arbeitsblatt auswählen, das das NamedRange-Steuerelement enthält, um dieses als aktives Arbeitsblatt festzulegen. Wenn automatisch generierter Code beim Löschen des Steuerelements nicht gelöscht wird, können Sie den Designer anweisen, den Code zu löschen. Aktivieren Sie dazu das Arbeitsblatt, und nehmen Sie eine Änderung vor, sodass das Arbeitsblatt als geändert markiert wird. Beim Neuerstellen des Projekts wird der Code entfernt.

Es gibt zwei Haupterklärungen:

  • Der Projekt-Assistent aus Visual Studio Tools for Office ändert keine Sicherheitsrichtlinien für Assemblys, die unter HTTP-Adressen erstellt wurden. Sie müssen der Assembly manuell volle Vertrauenswürdigkeit gewähren. Weitere Informationen finden Sie unter Gewusst wie: Gewähren von Berechtigungen für Ordner und Assemblys.

  • ASP.NET deaktiviert standardmäßig das Downloaden von DLLs. Damit Assemblys von Benutzern gedownloadet werden können, muss der Administrator des Webservers die IIS-Eigenschaften (Internet-Informationsdienste) so ändern, dass DLLs aus dem Verzeichnis mit der Assembly gedownloadet werden dürfen. Weitere Informationen finden Sie in der IIS-Hilfe unter http://localhost/iisHelp/ auf dem Webserver.

    Um zu testen, ob dies die Ursache des Problems ist, können Sie das Protokoll des Webservers auf verweigerte DLL-Anforderungen hin prüfen. Wenn die Ursache eine andere zu sein scheint, stellen Sie den Debugger so ein, dass er bei allen Ausnahmen unterbricht, und prüfen Sie die Fehlermeldungen.

Der Projekt-Assistent aus Visual Studio Tools for Office ändert die Sicherheitsrichtlinie auf Benutzerebene. Wenn Sie ein Projekt in einem UNC-Netzwerkverzeichnis erstellen, müssen Sie der Assembly in den Sicherheitsrichtlinien auf Computerebene Vertrauenswürdigkeit gewähren. Erst dann können Sie sie ausführen. Änderungen der Richtlinien auf Computerebene müssen Sie manuell vornehmen. Weitere Informationen finden Sie unter Gewusst wie: Gewähren von Berechtigungen für Ordner und Assemblys.

Das DocumentChange-Ereignis wird ausgelöst, wenn das aktive Dokument geändert wird. Oft wird es auch beim Öffnen eines Dokuments ausgelöst. Doch wegen der verschiedenen Arten, auf die Word-Dokumente geöffnet werden können (z. B. über die Eingabeaufforderung, in Windows Explorer oder im Menü Datei in Word), wird das DocumentChange-Ereignis u. U. nicht immer beim Öffnen des Dokuments ausgelöst. Es sollte immer ausgelöst werden, wenn das aktive Dokument nach dem Öffnen geändert wird. Verwenden Sie das Startup-Ereignis, wenn Aktionen beim Öffnen des Dokuments ausgeführt werden sollen.

Visual Studio-Tools für Office folgt einer Threadnamenskonvention, die den Debugger in die Lage versetzt, das Programm ordnungsgemäß zu schließen. Wenn Sie in der Projektmappe Threads erstellen, stellen Sie vor den Namen jedes einzelnen Threads das Präfix VSTA_, um sicherzustellen, dass diese Threads ordnungsgemäß behandelt werden, wenn Sie das Debuggen stoppen. Legen Sie beispielsweise die Name-Eigenschaft eines Threads, der auf ein Netzwerkereignis wartet, auf VSTA_NetworkListener fest.

In einer von Internet Explorer gehosteten Arbeitsmappe werden Ereignisse in einer anderen Reihenfolge ausgelöst als in einer in Excel geöffneten Arbeitsmappe. Außerdem werden einige Ereignisse zweimal ausgelöst. Wenn Ihre Projektmappe Internet Explorer einschließt, sollten Sie testen, wie sich die unterschiedliche Ereignisreihenfolge auf das Funktionieren der Projektmappe auswirkt.

Wenn Sie die Eingabeaufforderung verwenden, um eine Word-Vorlage zu öffnen und ein neues Dokument zu erstellen, müssen Sie den /z-Schalter verwenden, um das New-Ereignis auszulösen. Fügen Sie nach /z kein Leerzeichen ein, ansonsten erstellt Word kein neues Dokument auf Grundlage der Vorlage, sondern öffnet die Vorlage für die Bearbeitung. Beispiel: winword.exe /z"mytemplate.dot"

Dies ähnelt der Verwendung des /t-Schalters, nur dass /z zusätzlich das New-Ereignis auslöst.

Wenn Sie einem Excel-Projekt ein vorhandenes systemfremdes Arbeitsblatt (z. B. Excel-XML-Format) zugrunde legen, wird das Open-Ereignis beim Öffnen des Arbeitsblatts nicht ausgelöst.

Ein Endbenutzer kann den Schließvorgang einer Arbeitsmappe abbrechen und die Projektmappe weiter verwenden, nachdem der BeforeClose-Ereignishandler aufgerufen wurde. Das geschieht, wenn der Benutzer Änderungen in einer Arbeitsmappe vornimmt und sie dann ohne vorheriges Speichern schließen möchte. Der BeforeClose-Ereignishandler wird aufgerufen, und es wird ein Dialogfeld mit der Option zum Abbrechen des Schließvorgangs angezeigt.

Wenn Sie Code in den BeforeClose-Ereignishandler schreiben, mit dem Datenbankverbindungen beendet oder sonstige Bereinigungsvorgänge durchgeführt werden, wird dieser Code u. U. aufgerufen, während der Benutzer noch mit der Projektmappe arbeitet.

Wenn Sie das Menü Einfügen öffnen, auf Grafik zeigen und dann auf ClipArt klicken, wird nicht der ClipArt-Aufgabenbereich geöffnet, wenn zur selben Zeit Excel oder Word im Visual Studio-Designer geöffnet ist. Um ein ClipArt-Objekt mit den Menübefehlen hinzuzufügen, müssen Sie die Kopie des Arbeitsblatts oder Dokuments öffnen, die sich außerhalb von Visual Studio im Hauptprojektordner befindet (nicht die Kopie im \bin-Ordner), das ClipArt-Objekt hinzufügen und anschließend das Arbeitsblatt oder Dokument speichern.

© 2009 Microsoft Corporation. Alle Rechte vorbehalten. Nutzungsbedingungen | Markenzeichen | Informationen zur Datensicherheit
Page view tracker