Problem beim Auslesen von Dateeigenschaften via MS Shell Control .

22/02/2008 - 19:03 von André Korolkow | Report spam
Hallo,

ich verwende eine Acess 2000 DB, um Verzeichnisse mit Worddateien
auszulesen. Ergebnis sind Tabellen mit allen Dateieigenschaften (Title,
Subject, Keywords etc.) und OLE-Feldern mit dem Dateiinhalt.

Mittels eines Formulars mit Suchfunktion kann ich so innerhalb von tausenden
Dateien schnell die benötigten finden und auch über das OLE-Feld problemlos
einen Blick auf die Dateien werfen.

Als ich die DB vor ein paar Jahren schrieb, las ich die Dateieigenschaften
aus, indem ich per Code mit Word alle Dokumente öffnete und über
ActiveDocument.BuiltInDocumentProperties auf die Dateieigenschaften zugriff.
Das funktioniert, dauert aber ...


Spàter bin ich beim Experimentieren MP3-Dateien und der Verwaltung der Tags
mittels einer Access-DB auf die Verwendung der Bibliothek Microsoft Shell
Controls And Automation gestoßen. Damit lassen sich in Windeseile alle
möglichen Dateieigenschaften/Tags auslesen.

Nun das Problem:

Die Eigenschaft Keywords bei Worddokumenten wird nicht ausgelesen, obwohl
Keywords in den Dateieigenschaften eingetragen sind. Öffnet man das
Worddokument mit OpenOffice und speichert es im Open Document Format, werden
die Keywords korrekt ausgelesen.

Die Frage:
Wo könnten sich die Keywords verstecken? Wo könnte die Ursache dafür liegen?

Zum Ausprobieren:

In ein Modul kopieren, Pfad und Worddatei eingeben und mit F5 starten. Die
Eigenschaft 40 = Keywords bleibt bei mir leer. Im Open Document Format ist
die Anzeige hingegen korrekt.

Option Compare Database
Option Explicit

Sub ShowProperties()
Dim X$, i&
Dim strPath As String, strFName As String
Dim strMsg As String
'Shell-Objekte
Dim objShell As New Shell32.Shell
Dim objFolder As Shell32.Folder
Dim objItem As Shell32.ShellFolderItem

On Error Resume Next
strPath = "Der Pfad zur Worddatei"
strFName = "Die Worddatei"
Err = 0
Set objFolder = objShell.NameSpace(strPath)
If Err <> 0 Then
MsgBox "Set objFolder =: " & Err.Description & _
vbCrLf & vbCrLf & strPath
Exit Sub
End If
Err = 0
Set objItem = objFolder.ParseName(strFName)
If Err <> 0 Then
MsgBox "Set objItem =: " & Err.Description & _
vbCrLf & vbCrLf & strFName
Exit Sub
End If
strMsg = ""
For i = 0 To 100
X$ = objFolder.GetDetailsOf(Empty, i) & " = " & _
objFolder.GetDetailsOf(objItem, i)
If X$ <> " = " Then
strMsg = strMsg & CStr(i) & ": " & X$ & vbCrLf
End If
Next i

Beep
MsgBox strPath & strFName & vbCrLf & vbCrLf & strMsg

End Sub

Verweis auf Microsoft Shell Controls And Automation nicht vergessen.

Gruß

André
 

Lesen sie die antworten

#1 Mark Doerbandt
22/02/2008 - 22:15 | Warnen spam
Hallo, André,

André Korolkow:

Die Eigenschaft Keywords bei Worddokumenten wird nicht ausgelesen, obwohl
Keywords in den Dateieigenschaften eingetragen sind. Öffnet man das
Worddokument mit OpenOffice und speichert es im Open Document Format, werden
die Keywords korrekt ausgelesen.



interessant, aber ich habe keine Ahnung - hast Du schon mal bei den
Word-Kollegen nachgefragt?

Gruss - Mark

2. SEK (SQL Server-Entwickler-Konferenz) in Nürnberg:
12./13.4 und 19./20.4.2008 http://www.donkarl.com/SEK

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen