Anzeige
Archiv - Navigation
1096to1100
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Auslesen Dokumentinformationen

Auslesen Dokumentinformationen
Micha555
Hallo,
ich muss für hunderte von Office Dokumenten (und pdfs, aber Office wäre schon mal mehr als super!) die Dokumentinformationen in eine Excel Liste eintragen.
Jetzt habe ich hier (https://www.herber.de/forum/archiv/688to692/t691669.htm) einen Beitrag gefunden, der eigentlich genau das macht, was ich brauche (Habe den VBA Code mal unten eingefügt).
Leider funktioniert das nur für Excel-Dateien. Wenn ich das Makro auf ".FileType = msoFileTypeAllFiles" umstelle, bricht es bei einer Word Datei ab und geht in den ERROR Pfad. Soweit ich das verstehe kann er die Word-Datei nicht öffnen.......ich bekomme aber auch keine echte Fehlermeldung, so dass ich debuggen könnte.
Muss ich da noch irgendwas beachten? Mach ich was falsch? Hat jemand eine gute Idee oder gibt es einen anderen Weg, meine Aufgabe hinzubekommen?
Gruss und vielen Dank
Micha
Das Makro
----------------------------------------

Sub DateiEigenschaften()
'Trägt die Dateieigenschaften aller Dateien eines Verzeichnises
'mit Unterverzeichnissen in die aktuelle Tabelle ein!
'Die Tabelle wird vorher gelöscht (Inhalt)!
Dim fSearch As FileSearch
Dim wkb As Workbook, actSht As Worksheet
Dim strPath As String
Dim iCnt As Integer, n As Integer
Dim lRow As Long
On Error GoTo ERRORHANDLER
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
strPath = InputBox("Aus welchem Ordner?", Default:="C:\")
lRow = 1
Set actSht = ActiveSheet
With actSht
.Cells.ClearContents
.Cells.ClearFormats
End With
Set fSearch = Application.FileSearch
With fSearch
.NewSearch
.LookIn = strPath
.SearchSubFolders = True  ' 0 Then
actSht.Cells(lRow, 2).NumberFormat = "dd.mm.yyyy hh:mm:ss"
End If
If Err > 0 Then
Err.Clear
actSht.Cells(lRow, 2).Value = "k.A."
End If
On Error GoTo ERRORHANDLER
lRow = lRow + 1
'Next 'wenn For n
wkb.Close , False
End With
lRow = lRow + 1
Next
End With
Columns("A:A").Replace What:=".xls", Replacement:=""
actSht.Columns.AutoFit
actSht.Columns("A:B").HorizontalAlignment = xlLeft
ERRORHANDLER:
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Auslesen Dokumentinformationen
18.08.2009 11:36:29
Rudi
Hallo,
evtl. hilft das weiter:
Public Sub Dateieigenschaften()
'von K.Rola
Dim objShell As Object, objFolder As Object
Dim intIndex As Integer, intColumn As Integer, lngRow As Long
Dim varName, arrItems()
Dim strFolder As Variant
With Application.FileDialog(4)
.AllowMultiSelect = False
.InitialFileName = "c:\"
.InitialView = 1
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
End If
End With
If strFolder = "" Then
Exit Sub
End If
Application.ScreenUpdating = False
tbListe.Cells.Clear
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strFolder)
intColumn = 1
ReDim arrItems(1 To 201, 1 To 1)
For intIndex = 0 To 200
arrItems(intColumn + intIndex, 1) = _
IIf(objFolder.getdetailsof(varName, intIndex) = "", "x", objFolder.getdetailsof(varName,  _
intIndex))
Next
Rows(1).Font.Bold = True
lngRow = 2
For Each varName In objFolder.Items
ReDim Preserve arrItems(1 To 201, 1 To lngRow)
For intIndex = 0 To 200
arrItems(intColumn + intIndex, lngRow) = objFolder.getdetailsof(varName, intIndex)
Next
lngRow = lngRow + 1
Next
With tbListe
.Cells(1, 1).Resize(lngRow - 1, 201) = WorksheetFunction.Transpose(arrItems)
.Columns.AutoFit
End With
Application.ScreenUpdating = True
End Sub

Gruß
Rudi
Anzeige
Verwende GETOBJECT anstatt OPEN
18.08.2009 11:37:50
NoNet
Hallo Micha,
eins vorweg : In Deinem Codeausschnitt vermisse ich irgendwo die Anweisung wkb.Open ...
Mit diesem Code reduzierst Du die Möglichkeiten auf Excel bzw. alle Dateien werden von Excel geöffnet (zumindest findet der versuch statt ;-).
Verwende stattdessen GETOBJECT, dann wird die Datei (unsichtbar im Hintergrund) nicht mit Excel geöffnet - hier ein kleines Codebeispiel :
Sub WordDocEigenschaftenAuslesen()
Dim objDatei As Object, strDateiname As String
strdoc = "C:\Ordner\Word-Datei.doc"
Set objDatei = GetObject(strdoc)
MsgBox objDatei.BuiltinDocumentProperties("Author")
objDatei.Close False    'Datei wieder schließen
Set objDatei = Nothing  'Speicher für Variable freigeben
End Sub
Gruß, NoNet
Anzeige
AW: Auslesen Dokumentinformationen
18.08.2009 16:34:41
Micha555
Hallo,
erstmal Danke!!!!
@Rudi: bei deinem Code bekomme ich einen fehler in der Zeile
tbListe.Cells.Clear
Da müsste doch tbListe das aktuelle Tabellenblatt sein, oder?
@NoNet: Danke für den Tip, ich versuche das jetzt mal einzubauen und melde mich dann nochmal
Danke und Gruss
Michael
AW: Auslesen Dokumentinformationen
18.08.2009 16:37:48
Rudi
Hallo,
ersetze tbListe durch Activesheet oder Sheets(1).
Gruß
Rudi
AW: Auslesen Dokumentinformationen
18.08.2009 17:06:42
Micha555
Danke Rudi, das klappt!
Und wenn jemand ein ähnliches Problem hat:
http://www.vba1.de/vba/105dateilisten_reg_allgemein.php
DANKE euch allen (und sorry für das Doppelpost, keine Ahnung, wie ich das gemacht habe!)
Gruss
Micha
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige