Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
484to488
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
484to488
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateinamen einlesen

Dateinamen einlesen
20.09.2004 18:10:51
Claudia
Liebe Excel Helfer,
vor einiger Zeit wurde mir mit nachstehenden Makro bereits einmal geholfen. Ich kann mit diesem Makro einige Dateieigenschaften (Dateiname, Dateityp, Datei erstellt am) einlesen.


Public Sub lesen()
Dim fso As New FileSystemObject
Dim As Folder
Dim As File
Dim str As String
Dim aktuell As String
Dim As UsedObjects
Set WS = Worksheets("Archiv")
Set fso = New FileSystemObject
Set f = fso.GetFolder("C:\ALWIN\Aenderung\")
h = 0
l = 1
Do While h <> 1
    If Sheets("Archiv").Cells(l, 1) = 0 Then
        h = 1
    Else
        l = l + 1
    End If
Loop
leer = l
i = leer
For Each In f.Files
   Sheets("Archiv").Cells(i, 1) = p.Name
   i = i + 1
   'aRow = [65536].End(xlUp).Row
   Rows(i).Insert Shift:=xlDown
Next
i = leer
For Each In f.Files
   Sheets("Archiv").Cells(i, 2) = p.Type
   i = i + 1
Next
i = leer
For Each In f.Files
   Sheets("Archiv").Cells(i, 5) = p.DateCreated
   i = i + 1
Next
Ich kriegs nicht hin. Alle Versuche sind fehlgeschlagen. Wer kann mir in miner Verzweifelung helfen.
Vielen Dank
Gruß
Claudia

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

Betreff
Datum
Anwender
Anzeige
AW: Dateinamen einlesen
20.09.2004 18:41:51
Nepumuk
Hallo Claudia,
das geht nur mit Hilfe einer speziellen DLL die du erst auf deinem Rechner installieren musst. Bereit? Dann lade sie dir hier mal herunter: http://support.microsoft.com/?kbid=224351
Unter: Weiter Informationen findest du Dsofile.EXE
Ich warte mal, bis du dich wieder meldest.
Gruß
Nepumuk
AW: Dateinamen einlesen Dsofile downloadet
20.09.2004 19:55:50
Claudia
Hallo Nepumuk,
ich habe nach Deiner Anweisung die Datei gedownloadet und unter C:\DsoFile installiert.
Und was kommt jetzt? ;-))
Claudia
P.S. Kannst einen Moment mit weiteren Erklärungen warten, mein Mann ruft zum Essen fassen. Bin in ca. 30 Min. wieder online.
Anzeige
AW: Dateinamen einlesen Dsofile downloadet
20.09.2004 20:08:35
Nepumuk
Hallo Claudia,
welche Informationen benötigst du aus den Eigenschaften? Möglich sind folgende:
Name
AppName
Icon
Title
Author
Comments
Subject
Category
Company
Manager
CLSID
ProgID
Word Count
Page Count
Paragraph Count
Line Count
Character Count
Character Count(w / spaces)
Byte Count
Slide Count
Note Count
Hidden Slides
MultimediaClips
Last Edited by
Date Created
Date Last Printed
Date Last Saved
Total Editing Time (mins)
Version
Revision Number
Template Name
Presentation Format
Macros Attached
Thumbnail
Gruß
Nepumuk

Hallo Nepumuk,
folgende Infos wären ausreichend:
Comments
Subject
Category
Gruß
Claudia

Hallo Claudia,
nervösen Zeigefinger?
Beispielcode:


Public Sub test()
    Dim objFilePropReader As DSOleFile.PropertyReader
    Dim objDocProp As DSOleFile.DocumentProperties
    Dim objCustProp As DSOleFile.CustomProperty
    Set objFilePropReader = New DSOleFile.PropertyReader
    Set objDocProp = objFilePropReader.GetDocumentProperties("D:\Eigene Dateien\Eigene Tabellen\AAA.xls")
    MsgBox objDocProp.Comments
    MsgBox objDocProp.Subject
    MsgBox objDocProp.Category
    Set objFilePropReader = Nothing
    Set objDocProp = Nothing
End Sub


Soll dieser in das vorhandene Makro eingebunden werden? Wenn ja, in welchen Spalten soll dann die Ausgabe erfolgen?
Gruß
Nepumuk

Hallo Nepumuk,
war nicht nervös, stand plötzlich dreimal da (war wohl doch bisschen schnell).
Also, wäre natürlich ganz toll, das ganze in mein Makro einzubinden. Wenn das geht, dann bitte
Comments in spalte G
Subject in spalte K
Category in spalte L
Aber wofür musste ich den die Dsofile runterladen, was bezweckt die?
Prima, das Du Dich meinem Problem so annimmst.
Gruß
Claudia

Hallo Claudia,
die DLL wird benötigt um Zugriff auf dieses Objekt zu bekommen, ohne die Dateien zu öffnen. Das erst was du machen musst, ist im VBA - Editor under Extras - Veweise in der Liste nach: "DS: OLE Document Properties 1.4 Object Library" zu suchen und ein Häkchen rein zu machen. Bevor ich damit anfange, dein Makro hat einige wie soll ich sagen, "unkonventionelle Schleifen" drin. Was soll es genau machen? Eventuell geht es viel einfacher.
Gruß
Nepumuk

Hallo Nepumuk,
also das Makro soll u.a. aus einer Reihe von Dateien, die sich täglich im angegebenen Ordner befinden, aber sich auch ändern, mehrere Informationen einlesen. In der Vergangenheit haben schon sehr viele Kolleginnen und Kollegen an diesem Programm mitgewirkt und deshalb ist es wahrscheinlich auch so "unkoventionell" für Dich.
Die komplette Datei habe ich hochgeladen und den Autostart herausgenommen.
https://www.herber.de/bbs/user/11114.xls
Nachdem das Makro durchgelaufen ist, werden noch weitere Makros und Exceldateien abgearbeitet.
Nun ist es leider so, das ich nur sehr wenig Ahnung von VBA habe und die folgenden Makros noch eine ganze Menge bewirken.
Für mich wäre es nur sehr interessant das Makro zu ändern, da einige Mitarbeiter/innen seit geraumer Zeit wichtige Infos in die Dateieigenschaften wie Kommentar usw. schreiben. Genau diese Infos sind für mich wichtig und würden meine weitere Arbeit enorm erleichtern.
Ich finde es ganz prima wenn Du das Makro gerne "einfacher" stricken möchtest, aber ich weis nicht welche Auswirkungen es auf die noch folgenden Makros hat.
Gruß
Claudia

Hallo Claudia,
das Makro sucht von Zeile 1 abwärts nach einer leeren Zelle. Steht den darunter noch etwas außer "Historie:"? Das könnte auch per Makro eingefügt werden. Dann fügt es nach jeder Zeile einen neue ein. Auch wieder die Frage, ob darunter noch Daten kommen, die nach unten verschoben werden. Oder wird die Liste bei jedem durchlauf komplett neu erstellt? Am besten mal den Ablauf grob schildern, wenn es nicht zu viel verlangt ist, denn dein ursprüngliches Makro reibt sich an meiner Programmiererseele. :-)
Gruß
Nepumuk

Hallo Nepumuk,
die Datei und somit die Liste die erstellt wird, wird immer komplett neu gefüllt bzw. erstellt. Die Datei ist also am Anfang leer.
Die Daten werden gemäß den im Verzeichnis liegenden Dateien in C:\Datenserver komplett neu eingelesen und das Wort Historie: steht immer 9 (in Worten: NEUN) Zeilen nach der letzten gefüllten Zeile. Hinter Historie steht in dieser Datei nichts mehr, aber alle Daten werden dann in einem weiteren Programm übergeben. Und dort wiederum ist das Wort Historie von Bedeutung, da bestimmte Dateien erneut verschoben werden.
Ich hoffe ich habe mich verständlich ausgedrückt, da wie gessagt das ganze schon seit einiger Zeit sehr gut läuft und ich nur sehr wenig an der Entstehung beteiligt war.
Ich hoffe aber auch, das Deine Programmierseele nicht allzu sehr starpaziert wird und Du eine für mich einfache Lösung finden kannst.
Gruß
Claudia

Hallo Nepumuk,
sorry, hatte Dir falschen Pfadd zum einlesen genannt. Richtig muss heißen:
C:\ALWIN\Aenderung\
Gruß
Claudia

Hallo Claudia,
dein Programm:


Public Sub lesen()
    Dim myFileSystemObject As FileSystemObject, myFile As File, lngRow As Long
    Dim objFilePropReader As DSOleFile.PropertyReader
    Dim objDocProp As DSOleFile.DocumentProperties
    Application.ScreenUpdating = False
    Set objFilePropReader = New DSOleFile.PropertyReader
    Set myFileSystemObject = New FileSystemObject
    lngRow = 2
    With Worksheets("Archiv")
        .Range(.Cells(2, 1), .Cells(Rows.Count, 256)).ClearContents
        For Each myFile In myFileSystemObject.GetFolder("C:\ALWIN\Aenderung\").Files
            Set objDocProp = objFilePropReader.GetDocumentProperties(myFile.Path)
            .Cells(lngRow, 1) = myFile.Name
            .Cells(lngRow, 2) = myFile.Type
            .Cells(lngRow, 5) = myFile.DateCreated
            .Cells(lngRow, 7) = objDocProp.Comments
            .Cells(lngRow, 11) = objDocProp.Subject
            .Cells(lngRow, 12) = objDocProp.Category
            lngRow = lngRow + 1
        Next
        .Cells(lngRow + 9, 1) = "Historie:"
    End With
    Set objFilePropReader = Nothing
    Set objDocProp = Nothing
    Set myFileSystemObject = Nothing
    Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk

Hallo Nepuumuk,
ich hoffe ich strapaziere Diene Nerven nicht zu sehr zu dieser späten Stunde, aber ich erhalte einen Laufzeitfehler '-2147220989 (80040203)':
This file is currently open and cannot be read
in folgender Zeile
Set objDocProp = objFilePropReader.GetDocumentProperties(myFile.Path)
Kann das evtl. daran liegen, das die Datei ArchivAenderung.xls auch im gleichen Pfad wie die einzulesenden Daten liegt. Wenn ja, ist es schwer das zu korrigieren?
Gruß
Claudia

Hi Claudia,
das macht das ganze zwar etwas langsamer aber kein Problem, die Datei taucht dann in der Liste nicht mehr auf. Ein Problem?


Public Sub lesen()
    Dim myFileSystemObject As FileSystemObject, myFile As File, lngRow As Long
    Dim objFilePropReader As DSOleFile.PropertyReader
    Dim objDocProp As DSOleFile.DocumentProperties
    Application.ScreenUpdating = False
    Set objFilePropReader = New DSOleFile.PropertyReader
    Set myFileSystemObject = New FileSystemObject
    lngRow = 2
    With Worksheets("Archiv")
        .Range(.Cells(2, 1), .Cells(Rows.Count, 256)).ClearContents
        For Each myFile In myFileSystemObject.GetFolder("C:\ALWIN\Aenderung\").Files
            If ThisWorkbook.FullName <> myFile.Path Then
                Set objDocProp = objFilePropReader.GetDocumentProperties(myFile.Path)
                .Cells(lngRow, 1) = myFile.Name
                .Cells(lngRow, 2) = myFile.Type
                .Cells(lngRow, 5) = myFile.DateCreated
                .Cells(lngRow, 7) = objDocProp.Comments
                .Cells(lngRow, 11) = objDocProp.Subject
                .Cells(lngRow, 12) = objDocProp.Category
                lngRow = lngRow + 1
            End If
        Next
        .Cells(lngRow + 9, 1) = "Historie:"
    End With
    Set objFilePropReader = Nothing
    Set objDocProp = Nothing
    Set myFileSystemObject = Nothing
    Application.ScreenUpdating = True
End Sub


Gute Nacht wünscht
Nepumuk (der Morgen früh nochmal vorbeischaut)

Hallo Nepumuk,
sieht bisher sehr gut aus. Schon einmal vieeeeeeelen vieeeeeeeelen Dank und eine Gute Nacht.
Den Rest werde ich auch Morgen früh ausprobieren.
Ciao
Claudia

Hallo Nepumuk,
nachdem ich mich zwar schon verabschiedet hatte, ist mir noch eine kleinigkeit aufgefallen.
In meinem ursprünglichen Makro hatte ich folgende Zeilen (ziemlich am Ende) stehen:
i = leer
For Each p In f.Files
WS.Cells(i, 1) = p.Name
WS.Hyperlinks.Add Anchor:=WS.Cells(i, 8), Address:="C:\ALWIN\Prod\" & p.Name, TextToDisplay:="Dokument"
i = i + 1
Dieser Teil bedingte, das in Spalte 8 das Wort Dokument in jeder Zeile ab Zeile 2 geschrieben wurde und ein Hyperlink auf die Datei aus Spalte A mit der Adresse C:\ALWIN\Prod gesetzt wurde.
Ist es möglich das wieder in das Makro einzubauen? Asonsten läufte es absolut super. Nochmals vielen vielen Dank. Ich kann mir in Zukunft eine Menge arbeit sparen und werde auch keinem Verraten woher ich all die Infos so schnell erhalte. ;-)
Nochmals Danke
Gruß
Claudia
Und jetzt gehts ab ins Bett.

Guten Morgen Claudia,
wenn's nicht mehr ist:


Public Sub lesen()
    Dim myFileSystemObject As FileSystemObject, myFile As File, lngRow As Long
    Dim objFilePropReader As DSOleFile.PropertyReader
    Dim objDocProp As DSOleFile.DocumentProperties
    Application.ScreenUpdating = False
    Set objFilePropReader = New DSOleFile.PropertyReader
    Set myFileSystemObject = New FileSystemObject
    lngRow = 2
    With Worksheets("Archiv")
        .Range(.Cells(2, 1), .Cells(Rows.Count, 256)).ClearContents
        For Each myFile In myFileSystemObject.GetFolder("C:\ALWIN\Aenderung").Files
            If ThisWorkbook.FullName <> myFile.Path Then
                Set objDocProp = objFilePropReader.GetDocumentProperties(myFile.Path)
                .Cells(lngRow, 1) = myFile.Name
                .Cells(lngRow, 2) = myFile.Type
                .Cells(lngRow, 5) = myFile.DateCreated
                .Cells(lngRow, 7) = objDocProp.Comments
                .Hyperlinks.Add Anchor:=.Cells(lngRow, 8), Address:=myFile.Path, TextToDisplay:="Dokument"
                .Cells(lngRow, 11) = objDocProp.Subject
                .Cells(lngRow, 12) = objDocProp.Category
                lngRow = lngRow + 1
            End If
        Next
        .Cells(lngRow + 9, 1) = "Historie:"
    End With
    Set objFilePropReader = Nothing
    Set objDocProp = Nothing
    Set myFileSystemObject = Nothing
    Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk

Guten Morgen Nepumuk,
ja, das war wirklich alles. Du hast mir sehr geholfen und das Programm funktioniert wieder voll und ganz.
Nochmals vieeelen vieeelen Dank für alles. Ich habe sehr viel gelernt.
Gruß
Claudia
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige