Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mit dsofile.dll auf DokumentEigenschaften zugreife

Mit dsofile.dll auf DokumentEigenschaften zugreife
04.11.2007 15:59:00
Reinhard
Hallo,
jmd. fragte in einem anderen Forum an wie man die Statistik in Worddokument-Eigenschaften manipulieren kann.
Bei der Recherche stiess ich auf
http://mypage.bluewin.ch/reprobst/WordFAQ/DokEigen.htm#DokEigen09
wo ich herauslese dass man auch Datei-Eigenschaften von anderen Officeprogrammen, also auch Excel, anpassen kann.
Leider gelingt mir dies nicht. Ich habe die dort beschriebene dsofile.dll unter Verweise im VB-Editor eingebunden.
Allerdings interessiert mein Word (noch nicht bie Excel getestet) diese Einbindung überhaupt nicht, der Debugger bemängelt alles bei:

Sub BenutzerdefinierteEigenschaftVeraendern()
Datei = "C:\Eigene Dateien\Test.doc" 'Bitte gültiges Office-Dokument angeben
Dim oFilePropReader As DSOleFile.PropertyReader
Dim cProp As DSOleFile.DocumentProperties
Set oFilePropReader = New DSOleFile.PropertyReader
Set cProp = oFilePropReader.GetDocumentProperties(Datei)
cProp.CustomProperties.Item("Vertretung") = "Frankreich"
Set oFilePropReader = Nothing
Set cProp = Nothing
End Sub


D.h. der Debugger kennt keinen Variablentyp DSOleFile.PropertyReader usw.
Jetzt ist mir unklar, läuft das nur unter .NET wie von MS angedeutet? Oder fehlen mir mit Word-VBA noch einige Verweise?
Welche Verweise brauche ich dann in Excel-Vba?
Weil bei MS steht nix von Vba aber was von .Net, aber auf der o.g. Wordseite steht eindeutig:
Microsoft stellt für das erwähnte Vorhaben die Programmbibliothek dsofile.dll zur Verfügung, welche sich einfach in das VBA-Umfeld einbinden lässt und es ermöglicht, Dateieigenschaften von Office-Dokumenten auf effiziente Art auszulesen, anzupassen oder zu erstellen.
Danke ^ Gruß
Reinhard

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit dsofile.dll auf DokumentEigenschaften zugreife
04.11.2007 16:39:49
K.Rola
Hallo,
kannst du im Objektkatalog auf die Bibliothek zugreifen?
Verwendest du Unicode?
Set oFilePropReader = New DSOleFile.PropertyReader
oFilePropReader.UseUnicodePropSets = -1
Da sind noch einige Prüfungen zu machen, z.B., ob die Datei anderweitig verwendet wird, ob es sich überhaupt um ein Office-Dokument handelt...
Das Ganze ist etwas komplexer, als es auf den ersten Blick aussieht. Ich glaube mich zu erinnern,
dass Nepumuk da mal was ausführlicher zu gepostet hast.
Gruß K.Rola

Anzeige
AW: Mit dsofile.dll auf DokumentEigenschaften zugreife
06.11.2007 13:56:15
Reinhard
Hallo K.Rola,
im Objektkatalog muß ich zuhause nachschauen.
Nein, kein Unicode.
Es ist eine Officedatei und frei für den Zugriff.
Ja, entweder Nepumuk oder irgendwo sonst, irgendwas war mal mit dieser dsofile.dll, ich habe leider vergessen was, wann, wo:-(
Lieben Gruß
Reinhard

Anzeige
AW: Mit dsofile.dll auf DokumentEigenschaften zugreife
06.11.2007 17:03:13
K.Rola
Hallo,
sollte aber Unicode sein, siehe letzte Antwort.
Gruß K.Rola
;
Anzeige
Anzeige

Infobox / Tutorial

Mit dsofile.dll auf Dokumenteigenschaften zugreifen


Schritt-für-Schritt-Anleitung

Um mit der dsofile.dll auf Dokumenteigenschaften in Excel zuzugreifen, folge diesen Schritten:

  1. dsofile.dll herunterladen: Stelle sicher, dass du die dsofile.dll Datei heruntergeladen hast. Diese Datei ermöglicht es, Dokumenteigenschaften von Office-Dokumenten zu manipulieren.

  2. Einbindung im VBA-Editor:

    • Öffne Excel und gehe zum VBA-Editor (Alt + F11).
    • Klicke auf Extras > Verweise.
    • Suche und aktiviere die dsofile Bibliothek in der Liste.
  3. VBA-Code erstellen: Füge den folgenden Code in ein neues Modul ein:

    Sub BenutzerdefinierteEigenschaftVeraendern()
       Dim Datei As String
       Datei = "C:\Eigene Dateien\Test.doc" ' Bitte gültiges Office-Dokument angeben
       Dim oFilePropReader As DSOleFile.PropertyReader
       Dim cProp As DSOleFile.DocumentProperties
       Set oFilePropReader = New DSOleFile.PropertyReader
       Set cProp = oFilePropReader.GetDocumentProperties(Datei)
       cProp.CustomProperties.Item("Vertretung") = "Frankreich"
       Set oFilePropReader = Nothing
       Set cProp = Nothing
    End Sub
  4. Code ausführen: Stelle sicher, dass dein Dokument nicht von einer anderen Anwendung verwendet wird und führe den Code aus, um die benutzerdefinierte Eigenschaft zu ändern.


Häufige Fehler und Lösungen

  • Fehler: "Der Typ DSOleFile.PropertyReader ist nicht definiert":

    • Überprüfe, ob die dsofile.dll korrekt in den Verweisen eingebunden ist.
  • Fehler: "Die Datei wird von einer anderen Anwendung verwendet":

    • Stelle sicher, dass die Datei nicht geöffnet ist oder von einem anderen Prozess verwendet wird.
  • Unicode-Probleme:

    • K. Rola erwähnte die Verwendung von Unicode. Füge die Zeile oFilePropReader.UseUnicodePropSets = -1 hinzu, um Unicode-Property-Sets zu verwenden.

Alternative Methoden

Wenn du nicht mit dsofile.dll arbeiten möchtest, kannst du auch die Shell.Application-Klasse verwenden, um auf Datei-Eigenschaften zuzugreifen. Hier ein einfaches Beispiel:

Sub DateiEigenschaftenAnzeigen()
    Dim shell As Object
    Set shell = CreateObject("Shell.Application")
    Dim folder As Object
    Dim file As Object

    Set folder = shell.Namespace("C:\Eigene Dateien")
    Set file = folder.ParseName("Test.doc")

    MsgBox folder.GetDetailsOf(file, 0) ' Zeigt den Dateinamen an
End Sub

Diese Methode ist nicht so leistungsfähig wie dsofile, bietet aber eine einfache Möglichkeit, Informationen zu extrahieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die dsofile.dll verwenden kannst:

  1. Ändern von benutzerdefinierten Eigenschaften: Du kannst beliebige benutzerdefinierte Eigenschaften wie oben gezeigt ändern.

  2. Auslesen von Eigenschaften: Um alle Eigenschaften eines Dokuments auszulesen, kannst du den folgenden Code verwenden:

    Sub EigenschaftenAuslesen()
       Dim Datei As String
       Datei = "C:\Eigene Dateien\Test.doc"
       Dim oFilePropReader As DSOleFile.PropertyReader
       Dim cProp As DSOleFile.DocumentProperties
    
       Set oFilePropReader = New DSOleFile.PropertyReader
       Set cProp = oFilePropReader.GetDocumentProperties(Datei)
    
       MsgBox cProp.CustomProperties.Item("Vertretung") ' Zeigt die benutzerdefinierte Eigenschaft
    End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error GoTo-Anweisungen, um Fehler im Code elegant zu handhaben.
  • Teste in verschiedenen Szenarien: Überprüfe, ob deine Änderungen auch bei verschiedenen Dokumenttypen funktionieren.
  • Dokumentiere deinen Code: Schreibe Kommentare, um die Funktionalität deines Codes zu erklären, besonders wenn du mit dsofile arbeitest.

FAQ: Häufige Fragen

1. Wo kann ich die dsofile.dll herunterladen?
Die dsofile.dll kann von verschiedenen Quellen im Internet heruntergeladen werden. Stelle sicher, dass du eine vertrauenswürdige Quelle wählst.

2. Funktioniert dsofile.dll mit Excel 365?
Ja, die dsofile.dll sollte auch mit Excel 365 funktionieren, solange du die DLL korrekt eingebunden hast.

3. Wie kann ich die Eigenschaften einer Excel-Datei ändern?
Der Prozess ist ähnlich wie bei Word-Dokumenten. Stelle sicher, dass du den richtigen Dateipfad angibst und die dsofile.dll eingebunden ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige