| |
| MDG Engineering Nutzt Xometry, Um Medizinische Geräte Zu Bauen Und Das Globale Wachstum Voranzutreiben, ein Anwenderbericht
|
Autor
|
Thema: Dateiabfrage inkl. aller Unterverzeichnisse (1642 mal gelesen)
|
HAKL Mitglied
Beiträge: 32 Registriert: 14.10.2005 MicroStation 8.05.02.56 ViegaCAD 5.0
|
erstellt am: 06. Dez. 2006 20:51 <-- editieren / zitieren --> Unities abgeben:
Hallo VBA-Anwender, ich erarbeite mir gerade ein VBA-Lehrbuch und möchte eine Dateiabfrage in einem Verzeichnis inkl. aller Unterverzeichnisse tätigen. Wie muß ich untenstehendes VBA verändern, um dies zu erlangen? Sub DateienListen() Dim NächsteDatei As String Dim i As Integer Const DateiSuche = "C:\Daten\Zeichnungen\" Application.StatusBar = "Suchen in " & DateiSuche & "\" NächsteDatei = Dir(DateiSuche & "\" & "*.dwg") i = 0 Do Until NächsteDatei = "" i = i + 1 Cells(i, 1).Value = DateiSuche & "\" & NächsteDatei Application.StatusBar = DateiSuche & "\" & NächsteDatei NächsteDatei = Dir() Loop Application.StatusBar = False End Sub Leider finde ich in der Excel-Hilfe nicht den nötigen Hinweis oder übersehe diesen. Wünsche Euch eine schöne Adventszeit. ------------------ Gruß Harry
[Diese Nachricht wurde von HAKL am 12. Dez. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 06. Dez. 2006 21:19 <-- editieren / zitieren --> Unities abgeben: Nur für HAKL
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 06. Dez. 2006 21:25 <-- editieren / zitieren --> Unities abgeben: Nur für HAKL
N'Abend Harry, wo ist das Problem genau? Du siehst nichts? dann füg mal vor Loop ein Application.Wait (Now + TimeValue("0:00:03")) ein ; ) oder willst Du die jetzt auch ein die Liste schreiben? Tabelle1.Cells(i, 1) = DateiSuche & "\" & NächsteDatei vor NächsteDatei = Dir() oder ist es so einfach nicht und Du willst eigentlich was anderes(?) [edit] WOW, oder Du nimmst direkt die Komfort-Ausgabe von Axel! da reicht der 10-er nich... ich wollte doch vor'm posten immer die F5 drücken...[/edit] ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
[Diese Nachricht wurde von runkelruebe am 06. Dez. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 06. Dez. 2006 22:14 <-- editieren / zitieren --> Unities abgeben: Nur für HAKL
Hallo zusammen, der Dir ist mir zu langsam. Schneller geht's mit dem Filesystemobject, dem FileSearch-Objket und vor allen Dingen mit API. Ihr könnt's ja mal testen. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 06. Dez. 2006 22:37 <-- editieren / zitieren --> Unities abgeben: Nur für HAKL
|
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 06. Dez. 2006 22:51 <-- editieren / zitieren --> Unities abgeben: Nur für HAKL
Nicht schlecht Nepumuk, läuft viel schneller und ist sicher noch ausbaufähig (z.B. Extension / Dateiauswahl). Es ist aber die Frage was man noch will. Dein Script durchsucht z.B. auch noch die ganzen versteckten Dateien und Ordner hat aber keine Grösseninfos und Datum. Das würde Dein Script sicherlich etwas langsamer machen. Wenn man die Anzeigeinfos in meinem Script noch deaktivieren würde, wäre es sicher auch schneller. Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HAKL Mitglied
Beiträge: 32 Registriert: 14.10.2005 MicroStation 8.05.02.56 ViegaCAD 5.0
|
erstellt am: 07. Dez. 2006 10:08 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die vielfältigen und schnellen Antworten. Axel 's Variante ist perfekt und entspricht meinen Vorstellungen. Nepumuk 's Variante läuft bei mir nicht, vielleicht liegt es an meiner '97 Version. Bis ich mein VBA-Lehrbuch erarbeitet habe, kommen sicher noch viele Fragen. Hab also Verständnis für meine Unwissenheit. ------------------ Gruß Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing. / Supporter
Beiträge: 3864 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 07. Dez. 2006 10:32 <-- editieren / zitieren --> Unities abgeben: Nur für HAKL
Zitat: Original erstellt von Nepumuk: der Dir ist mir zu langsam. Schneller geht's mit dem Filesystemobject, dem FileSearch-Objket und vor allen Dingen mit API. Ihr könnt's ja mal testen.
Tolle Sache, funktioniert schnell und zuverlässig. Hatte gestern über 20'0000 Dateien direkt ins Excel eintragen lassen. Was würde passieren wenn es über 2^16 (65536) Dateien sind, dann gehen dem Excel die Zeilen aus ------------------ The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 07. Dez. 2006 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für HAKL
Hallo Axel, Größeninfo und Datum sind kein Problem. Wenn du dir den Typ ansiehst, in den die Daten eingelesen werden, kannst du ja selbst. :-) Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |