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

Sub-Ordner int. bei meinem Code?

Sub-Ordner int. bei meinem Code?
18.07.2017 16:26:19
Tobi
Hallo zusammen,
Bei euch sind die Experten :-). Ich hoffe diese Mal ist mein Problem nicht mehr so kompliziert und jemand kann mir eine Lösung präsentieren :-)
Grundsätzlich habe ich eine Zelle, welche die Basis ist zur Suche in einem Ordner mit Unterordner.
Die Zelle generiert einen Code, welcher dem Namen einer bestimmten PDF-Datei entspricht.
Nun möchte ich, dass mir durch drücken auf den Knopf, das Excel die PDF`s auflistet, welche dem Code (Dateinamen) entsprechen. Es sollen möglichst alle PDF`s gelistet werden, welche dem Code entsprechen. z.B. in der Zelle steht 101-20-303-0-01, nun sollen auch dejenigen gelistet werden welche so aussehen könnten:101-20-303-0-01A, 101-20-303-0-0134.
Diese PDF sollen als Hyperlink erscheinen. In der Bsp.-Datei findet ihr mein Code.
https://www.herber.de/bbs/user/114940.zip
Hoffentlich kann mir jemand helfen......
Viele Grüsse Tobi

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sub-Ordner int. bei meinem Code?
19.07.2017 09:32:28
Michael
Hallo!
Ist das nicht auch Dein Faden: https://www.herber.de/forum/messages/1568951.html
Wenn der noch offen ist, solltest Du dort bleiben - bzw. ihn jetzt schließen, nachdem ich Dir hier geantwortet habe.
Teste bitte folgenden Code:
Sub a()
'Directory Loop by Cor_Blimey
Const PFAD$ = "\\HV01\FTP Nibe\03 PM\03 Standard_Schema\"
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("WP-System Modul")
Dim ChkCode As Range, Hl As Range, fso, oFolder, oSubfolder, oFile
Dim queue As Collection
Set ChkCode = Ws.Range("I9")
Set fso = CreateObject("Scripting.FileSystemObject")
Set queue = New Collection
queue.Add fso.GetFolder(PFAD)
Do While queue.Count > 0
Set oFolder = queue(1)
queue.Remove 1
For Each oSubfolder In oFolder.SubFolders
queue.Add oSubfolder
Next oSubfolder
For Each oFile In oFolder.Files
If Left(oFile.Name, Len(ChkCode.Text)) = ChkCode.Text Then
With Ws
Set Hl = .Cells(.Rows.Count, "V").End(xlUp).Offset(1, 0)
With Hl
.Hyperlinks.Add anchor:=Hl, Address:=PFAD & oFile.Name
End With
End With
End If
Next oFile
Loop
End Sub
Den durchsuchten Hauptpfad kannst/musst Du im Code anpassen (bei PFAD), dieser wird, inkl. Sub-Verzeichnissen, durchgegangen und jeder Dateiname mit dem Text in Zelle I9 auf dem Blatt "WP-System Modul" verglichen - entsprechen die ersten x Zeichen des Dateinamens dem Text in I9, wird in Spalte V fortlaufend (= zeilenweise) ein Hyperlink auf die Datei angelegt; wobei x hierbei für die länge des Textes in I9 steht.
Gib Bescheid, ob Du damit zurechtkommst.
LG
Michael
Anzeige
AW: Sub-Ordner int. bei meinem Code?
19.07.2017 15:32:09
Tobi
Lieber Michael,
Als erstes ein grosses Dankeschön. Der Code funktioniert wunderbar und ist genau das wass ich gesucht habe. Nun gibt es ein kleines Detail. Der Hyperlink welcher angezeigt wird, kann nicht geöffnet werden, da der Unterordner nicht integriert wird im Hyperlink.
Kennst du dafür evtl. noch eine Lösung?
Lieber Gruss
Tobi
Ps: Werde den anderen Faden löschen.
AW: Sub-Ordner int. bei meinem Code?
19.07.2017 16:12:11
Michael
Hallo!
Super. Ja, da habe ich nicht aufgepasst/mitgedacht; man sollte seinem Code eine Minute mehr gönnen ;-)...
Versuch mal so:
Sub a()
'Directory Loop by Cor_Blimey
Const PFAD$ = "\\HV01\FTP Nibe\03 PM\03 Standard_Schema\"
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("WP-System Modul")
Dim ChkCode As Range, Hl As Range, fso, oFolder, oSubfolder, oFile
Dim queue As Collection
Set ChkCode = Ws.Range("I9")
Set fso = CreateObject("Scripting.FileSystemObject")
Set queue = New Collection
queue.Add fso.GetFolder(PFAD)
Do While queue.Count > 0
Set oFolder = queue(1)
queue.Remove 1
For Each oSubfolder In oFolder.SubFolders
queue.Add oSubfolder
Next oSubfolder
For Each oFile In oFolder.Files
If Left(oFile.Name, Len(ChkCode.Text)) = ChkCode.Text Then
With Ws
Set Hl = .Cells(.Rows.Count, "V").End(xlUp).Offset(1, 0)
With Hl
.Hyperlinks.Add anchor:=Hl, Address:=oFolder.Path & oFile.Name
End With
End With
End If
Next oFile
Loop
End Sub
LG
Michael
Anzeige
AW: Sub-Ordner int. bei meinem Code?
20.07.2017 08:00:29
Tobi
Hallo Michael,
nun klappt dies schon fast perfekt.
Leider unterteilt es mir den Pfad nicht mit einem /
Das bedeutet im Pfad , nach dem Unterordner kommt direkt der Namen der Datei.
BsP. C:Bla/BLA/Unterordnerdiekündigung anstatt C:Bla/BLA/Unterordner/diekündigung
Wie könnte ich dies beheben?
Sorry dass ich dich nochmals stören muss.
Gruss Tobias
Nochmal ergänzt...
20.07.2017 08:38:05
Michael
Hallo Tobi,
... So jetzt sollten alle Schlampereien beseitigt sein:
Statt
.Hyperlinks.Add anchor:=Hl, Address:=oFolder.Path & oFile.Name
schreibe
.Hyperlinks.Add anchor:=Hl, Address:=oFolder.Path & "\" & oFile.Name
Lg
Michael
Anzeige
AW: Nochmal ergänzt...
20.07.2017 09:12:47
Tobi
Hey Michael
Na Na Na, sei nicht so selbstkritisch.
Auch Einstein hat seine Formel nicht gleich beim ersten Mal richtig geschrieben :)
Lieben Dank an dich, ich hoffe ich kann mich Mal revanchieren.
PS: Die Formel läuft perfekt.
Gruess Tobias
Super! Danke für die Rückmeldung, owT
20.07.2017 11:08:38
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige