Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1184to1188
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

Windowssuche in .txt Datei speichern

Windowssuche in .txt Datei speichern
Stefan
Hallo,
Ich habe folgendes Problem:
Ich möchte das Ergebnis einer Windowssuche in eine .txt Datei abspeichern und sie dann in eine Exceltabelle übertragen. Wenn es eine Möglichkeit gibt direkt aus Excel heraus einen Pfad nach Exceldateien zu durchsuchen wäre dies auch okay. Kann mir hiermit jemand weiterhelfen?
Viele Grüße
Stefan
AW: Windowssuche in .txt Datei speichern
17.11.2010 14:21:55
Harald
Hallo Stefan,
ich habe mal einen Code, der ursprünglich für etwas anderes gedacht war angepasst:
Option Explicit
Sub test()
Dim ThisWorkbook As Workbook
Dim FSObjekt As Object
Dim FSFolder As Object
Dim FsFileList As Object
Dim FSFile As Object
Dim Zeile As Long
Const Spalte = 1
Set ThisWorkbook = ActiveWorkbook
Set FSObjekt = CreateObject("Scripting.FileSystemObject")
Set FSFolder = FSObjekt.GetFolder("d:\temp\")
Set FsFileList = FSFolder.Files
Application.ScreenUpdating = False
Zeile = 1
For Each FSFile In FsFileList
If UCase(FSObjekt.GetExtensionName(FSFile)) = "XLS" Then
Cells(Zeile, 1) = FSFile.Name
Zeile = Zeile + 1
End If
Next FSFile
Application.ScreenUpdating = True
End Sub

Gruß
Harald
Anzeige
AW: Windowssuche in .txt Datei speichern
17.11.2010 14:45:53
Stefan
Hallo Harald,
zunächst mal Vielen Dank für die Hilfe. Ich habe den Code in eine Excelmappe eingefügt, den Pfad entsprechend angepaßt in dem gesucht werden soll (ich hoffe das ist die Zeile, die dem Programm den Pfad angibt in dem gesucht werden soll )
Set FSFolder = FSObjekt.GetFolder("\\malibu\Projekte\SAP\300_Test\2010\")
und gestartet. Leider tut sich überhaupt nichts. Auch keine Fehlermeldung. Noch etwas: Der Code soll .xls, .xlsx und .xlsm Dateien suchen.
Viele Grüße
Stefan
AW: Windowssuche in .txt Datei speichern
17.11.2010 16:24:57
Ralf_P
Hallo Stefan,
einfach die Abfrage um weitere Dateiendungen erweitern.
Sub test()
Dim ThisWorkbook As Workbook
Dim FSObjekt As Object
Dim FSFolder As Object
Dim FsFileList As Object
Dim FSFile As Object
Dim Zeile As Long
Const Spalte = 1
Set ThisWorkbook = ActiveWorkbook
Set FSObjekt = CreateObject("Scripting.FileSystemObject")
Set FSFolder = FSObjekt.GetFolder("\\malibu\Projekte\SAP\300_Test\2010\")
Set FsFileList = FSFolder.Files
Application.ScreenUpdating = False
Zeile = 1
For Each FSFile In FsFileList
If UCase(FSObjekt.GetExtensionName(FSFile)) = "XLS" Then
Cells(Zeile, 1) = FSFile.Name
Zeile = Zeile + 1
ElseIf UCase(FSObjekt.GetExtensionName(FSFile)) = "XLSX" Then
Cells(Zeile, 1) = FSFile.Name
Zeile = Zeile + 1
ElseIf UCase(FSObjekt.GetExtensionName(FSFile)) = "XLSM" Then
Cells(Zeile, 1) = FSFile.Name
Zeile = Zeile + 1
End If
Next FSFile
Application.ScreenUpdating = True
End Sub
VG, Ralf
Anzeige
AW: Windowssuche in .txt Datei speichern
18.11.2010 06:07:20
Harald
Hallo Stefan,
ad1) möglicherweise kommt das Filesystemobject nicht mit der Pfadangabe klar? Probiere den Code bitte erst mal mit einem normal als Lauifwerk gemapptem Verzeichnis (also irgendwas mit Laufwerksbuchstabe":"Pfad, z.B. "c:\temp")
ad2) nichts leichter als das:
ersetze
If UCase(FSObjekt.GetExtensionName(FSFile)) = "XLS" Then
durch
If ((UCase(FSObjekt.GetExtensionName(FSFile)) = "XLS") OR (UCase(FSObjekt.GetExtensionName(FSFile)) = "XLSX") OR (UCase(FSObjekt.GetExtensionName(FSFile)) = "XLSM")) Then
Gruß Harald
Nachtrag: noch zwei Tips zum Testen
18.11.2010 07:19:02
Harald
Ich habe bei mir auch mal mit einem Pfad der Art "\\xxx\yyy\zzz\" getestet. Da klappt das. Bist Du sicher, dass in dem von Dir angegebenen Verzeichnis auch XLS Dateien liegen?
Du kannst mal prüfen, ob überhaupt Files gefunden werden, indem Du den Co so änderts:
...
For Each FSFile In FsFileList
Debug.Print FSFile.Name
...
Im VBA Editor öffnest Du dann das Direktfenster (Ansicht Direktfenster oder STRG+G), dort sollten alle gefundenen Files gelistet werden.
Du kannst außerdem testen, ob das Scripting auf Deinem Rechner überhaupt funktioniert. Kopiere folgenden Code (ohne die --- Trennzeilen) in eine Textdatei (Notepad) und speichere sie mit dem Namen "test.vbs".
--------------------------------------------
Rem Testscript: Ist VBscript installiert und funktioniert?
option explicit
MsgBox "VBScript funktioniert"
--------------------------------------------
Bei Doppelklick auf die test.vbs müsste eine MSGbox erscheinen. Wenn nicht, funktioniert Scripting auf Deinem Rechner nicht wie erwartet, wird aber von meinem Excel-Code verwendet ("Scripting.FileSystemObject"). Eventuell hilft Dir dann diese Seite:
http://www.microsoft.com/downloads/details.aspx?familyid=E74494D3-C4E1-4E18-9C6C-0EA28C9A5D9D&displaylang=de
Gruß Harald
Anzeige
AW: Nachtrag: noch zwei Tips zum Testen
18.11.2010 12:45:32
Stefan
Hallo Harald,
ich habe das vbs scripting ausprobiert und es funktioniert (es erscheint ein Meldefenster "VBScript funktioniert").
Dann habe ich den Pfad geändert in "C:\Dokumente und Einstellungen\ex_wagner\". Hier funktioniert der Code nicht (ohne Fehlermeldung).
Dann habe ich deinen Tip ausgeführt und den Code folgendermaßen geändert um zu überprüfen, ob überhaupt Dateien gefunden werden:
...
For Each FSFile In FsFileList
Debug.Print FSFile.Name
...
Im Direktfenster werden jetzt alle gefundenen Dateien angezeigt.
Wenn ich aber im ursprünglichen Code nur nach xls, xlsx und xlsm Dateien suchen möchte funktioniert es nicht. Die gefundenen Excel Dateien sollten dann in einem Excel Arbeitsblatt gespeichert werden. Eine Frage noch: Ist es möglich nur die Excel Dateien zu suchen, die innerhalb des vorgegebenen Pfades im Namen mit "GSZ ..." beginnen?
Hintergrund ist folgender: Ich möchte innerhalb des vorgegebenen Pfades alle Excel Dateien suchen, die im Namen mit "GSZ..." beginnen, die gefundenen in eine Excel-Tabelle oder eine Textdatei speichern um damit dann weiterzuarbeiten. Es handelt sich um ca. 2000 Dateien. Die Windowssuche findet diese zwar aber in dem Fall kann ich das Ergebnis nicht abspeichern.
Auf jeden Fall Vielen Dank für die Hilfe.
Viele Grüße
Stefan
Anzeige
Verstehe ich nicht
18.11.2010 13:21:36
Harald
Hallo Stefan,
Wenn im Debug-Fenster alle Dateien gelistet werden, dann findet Excel sie offensichtlich.
Was bedeutet genau "funktioniert es nicht"?
Bei mir werden die Dateien auf dem aktuellen Arbeitsblatt in der ersten Spalte beginnend ab Zeile 1 gelistet. Vielleicht heißt "funktioniert nicht" nur, dass Du ein anderes Ergebnis erwartest?
Zum zweiten Teil der Frage: klar geht das. Ändere den Code so (siehe Großschrift):
...
Zeile = 1
For Each FSFile In FsFileList
IF (left(UCASE(FSFile.name),3) = "GSZ") THEN
If ((UCase(FSObjekt.GetExtensionName(FSFile)) = "XLS") OR (UCase(FSObjekt.GetExtensionName(FSFile)) = "XLSX") OR (UCase(FSObjekt.GetExtensionName(FSFile)) = "XLSM")) Then
Cells(Zeile, 1) = FSFile.Name
Zeile = Zeile + 1
End If
END IF
Next FSFile
...
Also: erst prüfen, ob der Filename mit "GSZ" beginnt, dann gucken, ob die Extension XLS, XLSX oder XLSM ist.
Gruß Harald
Anzeige
AW: Verstehe ich nicht
19.11.2010 10:20:17
Stefan
Hallo Harald,
mit "funktioniert nicht" meine ich, daß kein Ergebnis vorhanden ist. Wenn ich im VBA-Editor auf den Button "ausführen" klicke wird kein Ergebnis gelistet.
Viele Grüße
Stefan
AW: Verstehe ich nicht
19.11.2010 10:23:48
Harald
Hallo Stefan,
wo soll den etwas gelistet werden?
Gruß Harald
AW: Verstehe ich nicht
19.11.2010 10:31:28
Stefan
Hallo,
in dem Arbeitsblatt aus dem heraus ich den Code starte. So wie du es in deiner letzten Nachricht beschrieben hast ("Bei mir werden die Dateien auf dem aktuellen Arbeitsblatt in der ersten Spalte beginnend ab Zeile 1 gelistet"). Oder liege ich hier falsch?
Grüße
Stefan
AW: Verstehe ich nicht
19.11.2010 11:34:10
Harald
Solte so sein, ich kann das Problem nicht nachvollziehen.
Vielleicht versuchst Du es mal mit einer leeren Mappe mit nur einem Arbeitsblatt?
Gruß
Harald
Anzeige
AW: Verstehe ich nicht
19.11.2010 11:38:18
Stefan
Hi,
mach ich. Ich werde mich am Wochenende auch mal dransetzen. Auf jeden Fall Vielen Dank.
Grüße
Stefan
AW: Verstehe ich nicht
19.11.2010 13:14:45
Stefan
Hallo Harald,
ich habe noch mal getestet. Der Code läuft jetzt, wenn ich einen Laufwerksbuchstaben vor den Pfad setze, also "C:\Dokumente und Einstellungen\ex_wagner" (so wie du es am Anfang vorgeschlagen hast). Bei der Netzwerkangabe "\\malibu\Projekte\SAP\300_Test\2010" leider nicht. Trotzdem eine Frage noch:
Kann man den Code so ändern, daß als Ausgabe nicht nur der Name sondern der ganze Pfad ausgegeben wird?
Grüße
Stefan
AW: Verstehe ich nicht
19.11.2010 13:44:24
Harald
Hallo Stefan,
bei mir läuft es auch mit \\Server\Pfad...
Wie dem aus sei, zur zweiten Frage: Ja kann man. Hoer mal auf die Schnellle nur als Debug-Ausgabe (innerhalb der for-each Schelife):
Debug.Print FSFile.Path
FSfile.Path kannst Du natürlich auch in eine Excel Zelle schreiben oder sonstwie weiterverarbeiten.
Ciao und sShönes Wochenende
Harald
Anzeige
AW: Verstehe ich nicht
19.11.2010 14:06:12
Stefan
Hallo Harald,
Vielen Dank nochmal und ein schönes Wochenende.
Grüße
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige