Infos von Datei und Tabelle auslesen

  • Sonstige

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von alchimist.

    Infos von Datei und Tabelle auslesen

    Hallo

    Ich versuche einige Infos über Tabellen und Datein automatisch auszulesen, stoße aber auf einige Probleme.
    Vieleicht kann wer (wie immer) helfen?
    1. Von einer Datei möchte ich den Autor oder Ersteller haben. Der pfad sieht zB so aus:\\Jtsfwc13c13\jt_b_ngm$\NGM Dokumentation\Roadmaps\02 Netz\hugo.xls

    2. Das Datum der letzte Änderung einer Tabelle in meinem active Sheet. Wenn das nich geht zumindest das Datim der letzten Änderung dieser Datei.

    lG Karl
    Hallo kv21,

    probiere es mal so:

    Quellcode

    1. Sub test()
    2. Dim oWbk As Workbook
    3. Dim oProp As DocumentProperty
    4. Dim strMsg As String
    5. Dim strFile As String
    6. strFile = "C:\Eigene Dateien\kannweg.xls"
    7. Set oWbk = Application.Workbooks.Open(strFile, , , , , , , , , , , , False)
    8. On Error Resume Next
    9. strMsg = strMsg & "FileDateTime" & vbTab & FileDateTime(strFile) & vbCrLf
    10. strMsg = strMsg & String(80, "-") & vbCrLf
    11. For Each oProp In oWbk.BuiltinDocumentProperties
    12. strMsg = strMsg & oProp.Name & vbTab & oProp.Value & vbCrLf
    13. Next oProp
    14. On Error GoTo 0
    15. oWbk.Close False
    16. Set oWbk = Nothing
    17. MsgBox strMsg
    18. End Sub


    Gruß Markus
    Der Fehler kommt bei der Zuweisungist zur Variablen strFile =....

    So hätte ich mir das gedacht, siehe Code.
    Bei den Fragezeichen hätte ich gerne den Author.
    Der Path der Dateien steht in Spalte 3 und in Spalte 6 brauche ich den dazu gehörigen Author.
    Die Dateien, von denen ich den Author benötige, will ich aber nicht öffnen wenn ich das nicht unbedingt muß.
    Es handelt sich auch um unterschiedliche Dateitypen (ppt, xls, doc, .....), da ich ein gesamtes Laufwerk (Share) auslese. Als Komentar bei hugopath habe ich ein Beispiel angeführt.

    code:

    Quellcode

    1. Sub Auswertung()
    2. Dim fso As FileSystemObject
    3. Dim hugopath As String
    4. Set fso = CreateObject("Scripting.FileSystemObject")
    5. Dim zeile As Integer
    6. Dim spalte As Integer
    7. Dim i As Integer
    8. zeile = 1
    9. spalte = 3
    10. Range("c1").Select
    11. Dim ext As String
    12. For i = Range("c1").CurrentRegion.Rows.Count To 1 Step -1
    13. zeile = i
    14. hugopath = Cells(zeile, spalte).Value '"\\Jtsfwc13c13\jt_b_ngm$\NGM Dokumentation gültig_ab_13_05_05\00_Roadmap_und_Berichte\Roadmaps\02 Netz\hugo.xls"
    15. ext = fso.GetExtensionName(hugopath)'erweiterung
    16. If ext = "" Then
    17. Rows(zeile).Select
    18. Selection.Delete Shift:=xlUp
    19. Else
    20. Cells(zeile, 1).Value = fso.GetFileName(hugopath)
    21. Cells(zeile, 2).Value = fso.GetParentFolderName(hugopath)
    22. Dim f As File
    23. Set f = fso.GetFile(hugopath)
    24. Cells(zeile, 5).Value = f.DateLastModified
    25. Cells(zeile, 6).value = ????Author?????
    26. End If
    27. Next i
    28. Range("a1").Select
    29. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kv21“ ()

    Hallo Karl,

    nicht sauer sein, wenn ich langsam ungeduldig werde....

    Ich bat dich, um den Quelltext, bei dem der Fehler (1004) auftritt. Du schickst mir deinen Quelltext und verwendest einen Ausschnitt aus meinem Quelltext, an dem der Fehler auftritt.

    Was soll ich dazu sagen?? Ich bin kein Hellseher! Du solltest dir schon Mühe geben, mir exakt zu vermitteln, was du tust oder vorhast. Nichts ist schlimmer, als wenn die Informationen nur bruchstückhaft übermittelt werden.

    Übrigens kann ich mir schwer vorstellen, dass an dieser Stelle (in meinem Code-Kontext):

    Quellcode

    1. strFile = "C:\Eigene Dateien\kannweg.xls"

    der Fehler erzeugt wird, außer auf deinem OS ist etwas "brack".

    Liefere mir bitte detaillierte Infos, dann helfe ich gern weiter. Kopiere bitte einfach den "schadhaften" Quelltext, bei dem der Fehler auftritt in dieses Forum, kennzeichne unter welchen Bedingungen an welcher Stelle im Quelltext welche Fehlermeldung erscheint und versuche den Quelltext durch notwendige Infos für jeden nachvollziehbar zu machen, dazu gehören Erklärungen zu Objekten die nicht lokal dimensioniert sind, bzw. Dateien, die wahrscheinlich nur auf deinem Rechner verfügbar sind.

    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „alchimist“ ()

    hallo alchimist

    Ja, Du hast schon recht, war nicht ganz korrekt von mir.

    Folgende Fehlermeldung bei

    Quellcode

    1. Set oWbk = Application.Workbooks.Open(strFile, , , , , , , , , , , , False)


    Laufzeitfehler '1004':
    Dateiname.doc: hat ein ungültiges Dateiformat.

    Ich übergebe der Variablen strFile meinen Path für die Suche nach den Author. Wenn es eine .xls Dateie ist, klapt es. Nur wenn ein anderer Datentype übergeben wird bekomme ich diesen Fehler.

    PS:
    Ich wollte mit meinem Code nur zeigen was ich bereits habe und zB.mit "FileSystemObject" das Datum für alle Datentypen bekomme. Nur den Author habe ich nicht geschafft.
    Hallo kv21,

    ich konnte nicht ahnen, dass du mit Excel beliebige andere Dateitypen öffnen möchtest. Das geht natürlich nicht, deshalb die Fehlermeldung.

    Alles weitere sollte mit Excel-Dateien und meinem Quelltext problemlos funktionieren.

    Du könntest die anderen Dateitypen per Automation mit dem entsprechenden Programm öffnen. Alles hängt natürlich auch mit der Anzahl der zu scannenden Dateien zusammen.

    Gruß Markus
    hallo alchimist

    Das ist es ja. Es sind leider recht viele Dateien, nähmlich aus einem gesamtes Laufwerk. Wenn ich jede Datei öffnen muß, um den Ersteller auszulesen, und das mit einer eigenen Routiene, dann dauert das schon recht lange. Am Bildschirm rattert es auch hurtig dahin. Man kann sicher mit einer select case Anweisung für jede Dateiendung einen Code zum öffnen schreiben.
    Ich hätte aber lieber eine elegantere Lösung. Ohne die Dateien öffnen zu müssen. Am Monitor ist dann auch keine hecktik durch das öffnen und schliesen der Datein.
    Gibt es in shell etwas ähnliches? Ich finde nichts passendes.
    Wenn ich nichts finde muß ich sowiso für jeden Dateityp was schreiben.

    lg
    Karl
    Hallo alchimist

    Ich habe mir mal die Seite angesehen. Da verstehe ich leider fast nur Bahnhof.
    Ist das richtig, das ich in Verweise im Menü Projekt etwas einstelle und dann kann ich das GetDocumentProperties verwenden?

    Wie ist das wenn meine Anwendung ein Fremder ausführen will, der diese Einstellung nicht hat? Fehler?

    Wie ich das dannim Detail in mein Excel einbette ist mir auch noch ein Rätsel.

    Gruß Karl
    Hallo Karl,

    sorry, aber das ist eine recht professionelle Möglichkeit, Datei-Infos auszulesen. Mann muss sich mit dem Thema auseinandersetzen und viel lesen, probieren und lernen, nur so habe ich das Proggen gelernt. Diese DLL ist eine Möglichkeit, Tools zu schreiben, mit denen man Geld verdienen kann, sei mir also nicht böse, wenn ich mir nicht die Zeit nehme, um eine genaue Anleitung hier zu veröffentlichen, die dann jeder benutzen kann.

    Die DLL, muss auf jeden Zielrechner installiert sein, siuche dazu unter Installationsprogramme, Installieren von ActiveX-Elementen.

    Für komplette Neulinge liegt der Zeitbedarf bei mindestens 3-6 h, bis du alle Wünschen ansatzweise umsetzen kannst, außer du findest im Inet eine Musterlösung.

    Viel Erfolg
    Markus
    Hallo alchimist

    Eine andere Lösung (die ich rasch umsetzen kann) gibt es nicht für mein Problem?

    Kann ich DocumentProperty für andere Dateitypen auch verwenden?
    (Frage ich deswegen mal so, weil ich im moment zu Hause sitze und da kein Windows und Excel zum testen habe, sondern Linux. Mein Lapi mit MS Excel ist in der Firma.)

    Gruß Karl
    Hallo Karl,

    entweder du proggst es für jede Anwendung extra (ohne die DLL, dazu kann auch Automation genutzt werden), das dauert immer lange, da jede Datei mit der Office-Applikation geöffnet werden muss.

    Der Vorteil an der DLL ist die große Geschwindigkeit, mit der du großen Datenmengen bearbeiten kannst.

    Wenn du nach der DLL im Inet suchst, wirst du bestimmt einige Bsp-Quelltexte finden, einfach mal etwas einlesen.

    Gruß Markus