| |
| MDG Engineering Nutzt Xometry, Um Medizinische Geräte Zu Bauen Und Das Globale Wachstum Voranzutreiben, ein Anwenderbericht
|
Autor
|
Thema: Mit Excel Dateinamen im Verzeichnis finden (14452 mal gelesen)
|
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 14. Okt. 2010 14:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, könnte mal wieder Eure Hilfe brauchen. Ich möchte bestimmte Dateinamen in Verzeichnissen finden. Die Ordner und Unterordner sind in der Exceltabelle angeben und als Hyperlink auch aufrufbar. Wie ich zu einer bekannten Datei komme im Verzeichnis kein Problem. Jetzt möchte ich aber eine Datei finden mit einer bestimmten Endung XYZ.PDF. Bekannt ist die Erweiterung aber leider nicht der Text dazu. Hab eine Beispiel Excel Mappe mit angehangen zum besseren Verständnis. Über einen Ansatz zur Lösung freue ich mich Danke Wolfgang ------------------ Immer wieder neu lernen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 14. Okt. 2010 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
|
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 14. Okt. 2010 15:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Runkelrübe, schönen Dank für Deine Antwort und auch den Link. Dort steht einiges dazu nur nicht das was ich suche. Wie ich das ganze mit Verzeichnissen auslesen realisiere habé ich mit Hilfe dieses Forums herausgefunden. Da waren es aber bekannte Namen. Diesmal ist nur die Dateiendung bekannt und es soll Zeilenweise in den def. Verzeichnissen gesucht und das Ergebnis in einer Zelle angezeigt werden. Grüße Wolfgang ------------------ Immer wieder neu lernen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 395 Registriert: 11.08.2007
|
erstellt am: 14. Okt. 2010 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
Hi Wolfgang, versuche es mal nach diesem Prinzip:
Code: Sub DateienAuflisten() Dim strVerzeichnis As String Dim strTyp As String Dim strDateiname As String Dim loZeile As Long strTyp = "*.pdf" Application.ScreenUpdating = False strVerzeichnis = "C:\Test\" strDateiname = Dir(strVerzeichnis & strTyp) loZeile = 1 With ThisWorkbook.Worksheets("Tabelle1") Do While strDateiname <> "" If InStr(strDateiname, "XYZ.") > 0 Then .Cells(loZeile, 1) = strDateiname strDateiname = Dir loZeile = loZeile + 1 Loop End With Application.ScreenUpdating = True End Sub
------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarkusK Mitglied
Beiträge: 131 Registriert: 09.08.2002 HP ZBook 15 G2 Intel i7-4810MQ 8-Core 32 GB Ram NVIDIA Quadro K2100M Win 7 Catia V5R24 SP4
|
erstellt am: 14. Okt. 2010 20:37 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
Hallo Wolfgang, die frage ist eigentlich, woran soll man denn die Datei erkennen? Darf es die erst beste sein? Dann könntest du diese Funtkion verwenden. (Funktion in ein Modul, und dann unter den Benutzerdefinierten Funktionen in Excel) Public Function Erste_Datei(Pfad As String, Endung As String) As String On Error GoTo fehler: Dim i As Integer i = InStrRev(Endung, ".") Endung = "*." & Right(Endung, Len(Endung) - i) Pfad = Pfad & IIf(Right(Pfad, 1) = "\", "", "\") If Dir(Pfad, vbDirectory) <> "" Then With Application.FileSearch .PropertyTests.Remove (1) '.NewSearch .LookIn = Pfad .Filename = Endung .SearchSubFolders = False .Execute If .FoundFiles.Count > 0 Then Erste_Datei = Right(.FoundFiles.Item(1), Len(.FoundFiles.Item(1)) - Len(Pfad)) End With End If fehler: End Function
------------------ Gruss Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 395 Registriert: 11.08.2007
|
erstellt am: 15. Okt. 2010 07:31 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
Hi Markus, nur als Hinweis: ab Excelversion 2007 wird der Befehl Application.FileSearch nicht mehr unterstützt. Ich habe mir deshalb angewöhnt, stattdessen Dir() zu verwenden, weil man ja nie weiß, mit welchen Excelversionen eine Programmierung (irgendwann einmal) eingesetzt werden soll. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarkusK Mitglied
Beiträge: 131 Registriert: 09.08.2002 HP ZBook 15 G2 Intel i7-4810MQ 8-Core 32 GB Ram NVIDIA Quadro K2100M Win 7 Catia V5R24 SP4
|
erstellt am: 15. Okt. 2010 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
|
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 395 Registriert: 11.08.2007
|
erstellt am: 15. Okt. 2010 10:43 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
|
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 15. Okt. 2010 14:14 <-- editieren / zitieren --> Unities abgeben:
Besten Dank für Eure Rückmeldungen zu meiner Anfrage. Die Lösung von MarkusK hab ich genommen; kann sie auch problemlos umsetzen auf eigenen Laufwerken. Nur leider nicht im Netzwerk. Da bekomme ich es nicht hin das eine Datei angezeigt wird. Weiß jemand Rat? Danke Wolfgang ------------------ Immer wieder neu lernen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 15. Okt. 2010 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
|
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 15. Okt. 2010 14:53 <-- editieren / zitieren --> Unities abgeben:
Hi Die Laufwerkspfade hole ich mir aus bestimmten Zellen; z.B.: A1 > D:\Datenbank als Festeingestelltes Verzeichnis Ab A3 sind Projektbezeichnungen definiert; diese sind zugleich auch Ordnernamen. Das Komplettverzeichnis setzt sich aus A1 & A3 zusammen und ist auch aufrufbar (=HYPERLING). Ändere ich den Inhalt von A1 in ein Netzwerklaufwerk werden keine Dateien mehr gefunden. Der Dateninhalt ist auf beiden Laufwerken gleich; nur aus D:\ wird z.B. Z:\. Über die Hyperlinkfunktion sind die Verzeichnisse auch aufrufbar. Hoffe ist so in etwa verständlich!?? Danke Wolfgang ------------------ Immer wieder neu lernen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 15. Okt. 2010 15:28 <-- editieren / zitieren --> Unities abgeben:
Hi Ich habe hier an einer Stelle eine Falschaussage gemacht. Hier: >>>Jetzt möchte ich aber eine Datei finden mit einer bestimmten Endung XYZ.PDF.<<< Ich möchte aber einen Verzeichnisnamen auslesen in dieser Form "Elcadprojekt.pro"; wobei Elcadprojekt variabel ist. Mit einem Dateinamen klappt die Lösung von MarkusK hervorragend. Ich dachte halt das die Erweiterung *.pro auch gefunden werden würde aufgrund der Dateiendung!!! Wie kann ich die Lösung von MarkusK anpassen das sie für meine Zwecke funktioniert?? Danke Wolfgang ------------------ Immer wieder neu lernen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarkusK Mitglied
Beiträge: 131 Registriert: 09.08.2002
|
erstellt am: 15. Okt. 2010 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
Hallo Wolfgang, ich versteh ehrlich nicht ganz was du genau möchtest, bzw. bin ich mir nicht sicher ob ich dich verstanden habe. Möchtest du ein Verzichnis ermitteln in dessen Namen am Ende ".pro" steht? Wenn dem so ist, versuch mal diese Funktion. Code:
Public Function Erster_Ordner(Pfad As String, Endung As String) As String On Error GoTo fehler: Dim i As Integer Dim s As Stringi = InStrRev(Endung, ".") Endung = "*." & Right(Endung, Len(Endung) - i) Pfad = Pfad & IIf(Right(Pfad, 1) = "\", "", "\") s = Dir(Pfad & Endung, vbDirectory) Do While s <> "" If GetAttr(s) = vbDirectory Then Erster_Ordner = s Exit Do End If s = Dir Loop fehler: End Function
------------------ Gruss Markus [Diese Nachricht wurde von MarkusK am 15. Okt. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 16. Okt. 2010 09:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Markus - schönen Dank erst mal für deine Mitwirkung. Der Hintergrund meiner Fragestellung ist der, das ich ein Projektverzeichnis nach vorhandenenen Projekten darstellen möchte. Es handelt sich hierbei um Ordner und Zip-Dateien in dieser Form. Elcad1.pro & Elcad1.zip (Elcad1 variabel) Deine Funktion "Erste_Datei" findet *.txt *.rar Dateien aber kein *.,zip Deine Funktion "Erster_Ordner" findet leider nichts. Im Verzeichnis ist nur das wie im Bild dargestellt. Danke dir erstmal
Grüße Wolfgang ------------------ Immer wieder neu lernen [Diese Nachricht wurde von hotstaks2005 am 16. Okt. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarkusK Mitglied
Beiträge: 131 Registriert: 09.08.2002
|
erstellt am: 17. Okt. 2010 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für hotstaks2005
Pfad = Pfad & IIf(Right(Pfad, 1) = "\", "", "\") s = Dir(Pfad & Endung, vbDirectory) Do While s <> "" If GetAttr(Pfad & s) = vbDirectory Then Erster_Ordner = s Exit Do End If s = Dir Loop fehler: End Function Public Function Erste_Datei(Pfad As String, Endung As String) As String On Error GoTo fehler: Dim i As Integer Dim s As String i = InStrRev(Endung, ".") Endung = "*." & Right(Endung, Len(Endung) - i) Pfad = Pfad & IIf(Right(Pfad, 1) = "\", "", "\") s = Dir(Pfad & Endung) If s <> "" Then Erste_Datei = s fehler: End Function [/CODE] Wenn immer nur ein Ordner mit .pro und eine ZIP-Datei im Verzeichnis vorhanden ist, könnte man das ganze auch etwas vereinfache, und nur eine Funktion verwenden. (geht aber nur, bei einem Eintrag im Verzeichnis)
Code:
Public Function Ordner_oder_Datei(Pfad As String, Endung As String) As String On Error GoTo fehler: Dim i As Integer Dim s As String i = InStrRev(Endung, ".") Endung = "*." & Right(Endung, Len(Endung) - i) Pfad = Pfad & IIf(Right(Pfad, 1) = "\", "", "\") s = Dir(Pfad & Endung, vbDirectory) If s <> "" Then Ordner_oder_Datei = s fehler: End Function
------------------ Gruss Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 18. Okt. 2010 12:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum; hallo Markus Mit den von dir bereitgestellten Code konnte ich mein Vorhaben perfekt umsetzen. Besten Dank dafür. Eine Erweiterung der Ausgabe mit Datumsangabe versuche ich jetzt erst mal selber hin zu bekommen. Also vielen Dank nochmal und allen einen schönen Tag.
Wolfgang ------------------ Immer wieder neu lernen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |