"Dsofile.dll" ermöglicht die Bearbeitung der Eigenschaften von Office-Dokumenten aus Visual Basic .NET 2003 und Visual Basic .NET 2002

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 224351 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
224351 Dsofile.dll lets you edit Office document properties without Office in Visual Basic .NET 2003 and in Visual Basic .NET 2002
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Die Beispieldatei "Dsofile.dll" ist eine In-Process-ActiveX-Komponente für Programmierer, die Microsoft Visual Basic .NET oder das Microsoft .NET Framework verwenden. Mithilfe dieser Komponente können in benutzerdefinierten Anwendungen unter anderem die OLE-Dokumenteigenschaften der folgenden Microsoft Office-Dateien gelesen und bearbeitet werden:
  • Microsoft Excel-Arbeitsmappen
  • Microsoft PowerPoint-Präsentationen
  • Microsoft Word-Dokumente
  • Microsoft Project-Projekte
  • Microsoft Visio-Zeichnungen
  • Andere Dateien, ohne dass die dazugehörigen Office-Produkte installiert sind


Die Beispieldatei "Dsofile.dll" ist in Microsoft Visual C++ erstellt. Sie demonstriert, wie mithilfe der IPropertyStorage-OLE32-Schnittstelle auf die erweiterten Eigenschaften von OLE Structured Storage-Dateien zugegriffen wird. Die Komponente konvertiert die Daten in Automation-fähige Datentypen, die einfacher von Visual Basic .NET und dem .NET Framework verwendet werden können. Die Beispieldatei "Dsofile.dll" wird mit vollständigem Quellcode bereitgestellt und beinhaltet in Visual Basic .NET erstellte Beispielclients.

Weitere Informationen

Download der ActiveX-Beispielkomponente

Die folgenden Dateien stehen im Microsoft Download Center zum Download zur Verfügung:
Bild minimierenBild vergrößern
Download
Paket "DsoFileSetup_KB224351_x86.exe" jetzt downloaden.
Sie können die Beispieldatei "Dsofile.dll" und die Visual Basic .NET-Codedateien unentgeltlich nach Belieben verwenden, ändern, reproduzieren und weitergeben, Ihr Einverständnis vorausgesetzt, dass Microsoft keinerlei Garantie, Verpflichtungen oder Haftung für diese Dateien oder die darin bereitgestellten Informationen übernimmt. Die Komponente und der Quellcode werden kostenlos zu Veranschaulichungszwecken als Beispiel bereitgestellt. Wenn Sie die Komponente ganz oder teilweise in einer Produktionslösung verwenden möchten, tragen Sie die alleinige Verantwortung für die Überprüfung, Änderung und Unterstützung der Komponente.

Achtung: Microsoft stellt Ihnen die Datei "Dsofile.dll" und den dazugehörigen Beispielcode ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität, sowie ohne Anspruch auf Support zur Verfügung und schließt jede ausdrückliche oder gesetzliche Gewährleistung aus, einschließlich, aber nicht beschränkt auf die gesetzlichen Garantien der Marktgängigkeit und/oder der Eignung für einen besonderen Zweck. Die Verwendung geschieht auf eigene Verantwortung.

Informationen zu den OLE-Dokumenteigenschaften

Jedes OLE-Verbunddokument kann Zusatzinformationen zum Dokument in persistenten Property Sets speichern, die als Dokumentzusammenfassungseigenschaften bezeichnet werden. Diese Property Sets werden von COM/OLE verwaltet, damit Dritt-Clients diese Informationen ohne Unterstützung der Hauptanwendung lesen können, die für die Datei zuständig ist.

Zur Unterstützung von Entwicklern, die Dokumenteigenschaften lesen möchten, stellt Microsoft zwei Schnittstellen zur Verwaltung von Property Sets zur Verfügung:
  • IPropertySetStorage
  • IPropertyStorage
Jedoch können Visual Basic .NET-Programmierer diese Schnittstellen nicht direkt nutzen, da sie nicht Automation-kompatibel sind. Um dieses Problem zu umgehen, können Visual Basic .NET-Entwickler eine ActiveX-DLL, wie die Beispieldatei "DsoFile", zum Lesen und Schreiben der gängigsten, in OLE-Verbunddokumenten verwendeten Eigenschaften zu verwenden. Dies trifft insbesondere auf die von Office verwendeten Eigenschaften zu.

Hinweis: Die Beispieldatei "Dsofile.dll" wurde speziell zur Verwendung durch Visual Basic .NET-Programmierer erstellt, kann aber aus jeder COM-fähigen Sprache heraus verwendet werden.

Verwenden der Komponente "DsoFile" aus einer benutzerdefinierten Anwendung

Die Beispieldatei "Dsofile.dll" liest und schreibt die Standardeigenschaften und benutzerdefinierten Eigenschaften jeder beliebigen OLE Structured Storage-Datei. Darunter die der folgenden Dateitypen:
  • Word-Dokumente
  • Excel-Arbeitsmappen
  • PowerPoint-Präsentationen
Aufgrund ihrer Größe und Geschwindigkeit kann die Beispieldatei "Dsofile.dll" viel effizienter arbeiten, als dies beim Automatisieren von Office zum Lesen von Dokumenteigenschaften der Fall wäre.

Um die Komponente verwenden zu können, müssen Sie einen Verweis auf die Dsofile-Typbibliothek "DSO OLE Document Properties Reader 2.0" erstellen. Die Komponente kann von spät und früh gebundenen Aufrufen verwendet werden. Die Beispieldatei "Dsofile.dll" besitzt nur ein erstellbares Objekt. Hierbei handelt es sich um das Objekt DSOFile.OleDocumentProperties. Das Objekt DSOFile.OleDocumentProperties ermöglicht den Zugriff auf die OLE-Dokumenteigenschaften einer von Ihnen geladenen Datei über die Methode Open. Alle Eigenschaften werden eingelesen und beim Öffnen zwischengespeichert. Sie werden anschließend über das Objekt OleDocumentProperties für die Bearbeitung zur Verfügung gestellt. Die Eigenschaften werden erst dann in die Datei zurückgeschrieben, wenn Sie die Methode Save aufrufen. Wenn Sie die Bearbeitung einer Datei abgeschlossen haben, rufen Sie Close auf, um die Sperre der Datei aufzuheben.

Die OLE-Standardeigenschaften und die standardmäßigen Office-Zusammenfassungseigenschaften können aus der Eigenschaft SummaryProperties abgerufen werden. Die benutzerdefinierten Eigenschaften sind in der Auflistung CustomProperties aufgelistet. Jede benutzerdefinierte Eigenschaft besitzt einen eindeutigen Namen. Der Zugriff auf benutzerdefinierte Eigenschaften ist über diesen Namen in einer Auflistung möglich. Sie können einzelne Eigenschaften hinzufügen oder entfernen. Außerdem haben Sie die Möglichkeit, die gesamte Auflistung mithilfe der "For Each"-Syntax in Visual Basic .NET aufzuzählen.

Beim Aufruf der Open-Methode versucht das Objekt OleDocumentProperties namens "Dsofile", das Dokument für den Lese- und Schreibzugriff zu öffnen. Wenn die Datei als schreibgeschützt gekennzeichnet wurde, oder wenn sich die Datei auf einer NTFS-Freigabe befindet, die nur Lesezugriff gewährt, schlägt der Aufruf eventuell fehl. Die folgende (sinngemäße) Fehlermeldung wird möglicherweise angezeigt:
Fehler 70: Zugriff verweigert
(Error 70: Permission denied)
Wenn Sie die Datei nur mit Lesezugriff öffnen wollen, übergeben Sie für den ReadOnly-Parameter der Methode Open den Wert True. Darüber hinaus können Sie das Flag dsoOptionOpenReadOnlyIfNoWriteAccess übergeben, wenn "Dsofile" versuchen soll, die Datei für die Bearbeitung zu öffnen. Wenn "Dsofile" nicht auf die Datei zugreifen kann, weil sie schreibgeschützt oder von einem anderen Prozess gesperrt ist, öffnen Sie eine schreibgeschützte Kopie. Sie können anschließend anhand der Eigenschaft IsReadOnly feststellen, ob das Dokument schreibgeschützt geöffnet ist.

Wenn eine Eigenschaft geändert oder modifiziert wurde, können Sie mithilfe der Eigenschaft IsDirty feststellen, ob die eingestellte Eigenschaft gespeichert werden muss. Vorgenommene Änderungen werden erst beim Aufruf der Methode Save in die Datei geschrieben. Wenn Sie die Methode Save nicht aufrufen, gehen die Änderungen beim Aufruf der Methode Close verloren.

Zusätzlich zu den Standard-Automatisierungsfehlermeldungen kann "Dsofile" eine der folgenden benutzerdefinierten Fehlermeldungen erzeugen, wenn etwas nicht funktioniert:
Error -2147217151 (&H80041101): You must open a document to perform the action requested.
(Fehler -2147217151 (&H80041101): Sie müssen ein Dokument öffnen, um die angeforderte Aktion auszuführen.)
Error -2147217150 (&H80041102): You must close the current document before opening a new one in the same object.
(Fehler -2147217150 (&H80041101): Sie müssen das aktuelle Dokument schließen, bevor Sie ein neues Dokument in demselben Objekt öffnen.)
Error -2147217149 (&H80041103): The document is in use by another program and cannot be opened for read-write access.
(Fehler -2147217149 (&H80041103): Das Dokument wird derzeit von einem anderen Programm verwendet und kann nicht für den Lese-/Schreibzugriff geöffnet werden.)
Error -2147217148 (&H80041104): The document is not an OLE file, and does not support extended document properties.
(Fehler -2147217148 (&H80041104): Das Dokument ist keine OLE-Datei und unterstützt keine erweiterten Dokumenteigenschaften.)
Error -2147217147 (&H80041105): The command is not available because document was opened in read-only mode.
(Fehler -2147217147 (&H80041105): Der Befehl ist nicht verfügbar, weil das Dokument schreibgeschützt geöffnet ist.)
Error -2147217146 (&H80041106): The command is available for OLE Structured Storage files only.
(Fehler -2147217146 (&H80041106): Der Befehl ist nur für OLE Structured Storage-Dateien verfügbar.)
Error -2147217145 (&H80041107): The object is not connected to the document (it was removed or the document was closed).
(Fehler -2147217145 (&H80041107): Das Objekt ist nicht mit dem Dokument verknüpft (es wurde entweder entfernt oder das Dokument wurde geschlossen).)
Error -2147217144 (&H80041108): Cannot access property because the set it belongs to does not exist.
(Fehler -2147217144 (&H80041108): Zugriff auf die Eigenschaft nicht möglich, weil das Set zu dem die Eigenschaft gehört, nicht existiert.)
Error -2147217143 (&H80041109): The property requested does not exist in the collection.
(Fehler -2147217143 (&H80041109): Die angeforderte Eigenschaft existiert nicht in der Auflistung.)
Error -2147217142 (&H8004110A): An item by that name already exists in the collection.
(Fehler -2147217142 (&H8004110A): Es existiert bereits ein Element mit diesem Namen in der Auflistung.

Unicode-Property Sets

OLE-Property Sets können Zeichenfolgen entweder im Unicode-Format oder im MBCS-Format (Multi-Byte Character String, MBCS) mit einer angegebenen Codepage speichern. "Dsofile" kann beide Property Set-Typen lesen und in diese schreiben. Bei der Erstellung neuer Sets, wie etwa beim Hinzufügen von Eigenschaften zu einer Datei, die noch keine Eigenschaften besitzt, wählt "Dsofile" standardmäßig Unicode. Wenn "Dsofile" das Set unter Verwendung des MBCS-Formats für Zeichenfolgen erstellen soll, können Sie das Flag dsoOptionUseMBCStringsForNewSets in der Methode Open übergeben.

Da vorhandene Property Sets eventuell das MBCS-Format verwenden, muss "Dsofile" die Zeichenfolgen bei einem Save-Vorgang im selben Format speichern. Wenn Sie versuchen, eine Zeichenfolge hinzuzufügen, die der Codepage für das Property Set nicht zugeordnet werden kann, schlägt der Vorgang eventuell fehl. Daher sollten Sie die Zeichenfolgen auf Zeichen beschränken, die in der Codepage des Systems existieren, das die Datei erstellt hat. Stellen Sie alternativ dazu sicher, dass alle Property Sets im Unicode-Format vorliegen, bevor Sie diese Eigenschaften bearbeiten.

Hinweis: "Dsofile" konvertiert existierende Property Sets im MBCS-Format nicht in das Unicode-Format. Sie müssen die Beispieldatei bearbeiten, wenn Sie diese Fähigkeit hinzufügen möchten.

Schritte zum Einrichten und Testen der DLL

Die selbstextrahierende Setup-Datei installiert die Komponente "DsoFile.dll" an einem Speicherort Ihrer Wahl. Sie installiert außerdem zwei Visual Basic .NET-Testanwendungen, die die Verwendung der Komponente und des Quellcodes veranschaulichen.

Wenn Sie die DLL an einen anderen Speicherort oder auf einen anderen Computer verschieben, müssen Sie die DLL (neu) registrieren, bevor Sie sie wieder verwenden können. Gehen Sie hierzu folgendermaßen vor. Klicken Sie im Menü Start auf Ausführen, und geben Sie regsvr32 [Dateipfad]\dsofile.dll im Feld Öffnen ein.

Gehen Sie folgendermaßen vor, um das Beispiel auszuführen:

Für eine Visual Basic 6.0-Demonstration

  1. Öffnen Sie das folgende Visual Basic 6.0-Beispielprojekt:

    .\Source\Vb6Demo\PropDemo.vbp
  2. Vergewissern Sie sich, dass "Dsofile.dll" korrekt referenziert wurde. Klicken Sie hierzu im Menü Projekt auf Verweise. Prüfen Sie, ob für DSO OLE Document Properties Reader 2.0 ein Verweis gesetzt wurde.
  3. Drücken Sie [F5], um das Projekt auszuführen.
  4. Wenn Sie dazu aufgefordert werden, eine Verbunddokumentdatei zu öffnen, wählen Sie eine geeignete Datei aus. Sie werden feststellen, dass die Dokumenteigenschaften der Datei angezeigt werden.

Für eine Visual Basic .NET 7.0- oder eine Visual Basic .NET 7.1-Demonstration

  1. Öffnen Sie das folgende Visual Basic 7.0-Beispielprojekt:

    .\Source\Vb7Demo\FilePropDemoVB7.sln

    Sie können dieses Projekt in Visual Basic 7.0 in Visual Studio .NET 2002 oder in Visual Basic 7.1 in Visual Studio .NET 2003 öffnen.
  2. Wenn Sie gefragt werden, ob die Lösung automatisch vom 7.0-Format in das 7.1-Format konvertiert werden soll, klicken Sie auf Ja.
  3. Drücken Sie die Taste [F5], um das Visual Basic-Projekt zu kompilieren und auszuführen.
  4. Wenn das Formular angezeigt wird, klicken Sie auf Öffnen.
  5. Wählen Sie eine geeignete Office-Datei aus, und klicken Sie auf OK.

    Sie werden feststellen, dass die Dokumenteigenschaften der Office-Datei im Dialogfeld angezeigt werden. Sie können die Dokumenteigenschaften bearbeiten.

Informationsquellen

Weitere Informationen zum Lesen von Dokumenteigenschaften aus Visual C++ finden Sie in folgendem Artikel der Microsoft Knowledge Base:
186898 Welche Verfahrensweise zu Leseverbunddokumenteigenschaft direkt mit VC++

Eigenschaften

Artikel-ID: 224351 - Geändert am: Montag, 27. März 2006 - Version: 9.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Office Excel 2003
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2003
  • Microsoft Office Visio Professional 2003
  • Microsoft Office Project Professional 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Visio 2002 Professional Edition
  • Microsoft Project 2002 Standard Edition
Keywords: 
kbdownload kbautomation kbfile kbinfo kbpersistst KB224351
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com