Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Pfad auslesen einer bestimmten Datei

Forumthread: Pfad auslesen einer bestimmten Datei

Pfad auslesen einer bestimmten Datei
10.01.2025 10:04:25
Uwe
Hallo zusammen,

wer kann mir bei meinem Problem helfen?
Ich will mir den Pfad auslesen in welchem eine bestimmte Datei mit dem Namen Beispiel.xlsm ist.

Danke und viele Grüße
Uwe
Anzeige

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
=Zelle("dateiname") owT
10.01.2025 10:40:30
Yal
AW: =Zelle("dateiname") owT
10.01.2025 13:08:09
Uwe Baier
Wie soll ich das verwenden??? Komm leider damit nicht klar.
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 11:09:30
volti
Hallo,

hier eine Idee.

Den Startpfad möglichst genau vorgeben, sonst kann es auch etwas länger dauern....

Code:


Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _ ByVal RootPath As String, ByVal InputPathName As String, _ ByVal InputPathBuffer As String) As Long Sub SucheDatei() Dim sTxt As String * 255, sDatei As String, sStartpfad As String sDatei = "Beispiel.xlsm" sStartpfad = "D:\" If SearchTreeForFile(sStartpfad, sDatei, sTxt) = 0 Then MsgBox "Datei wurde nicht gefunden!", vbCritical Else MsgBox "Gefunden in" & vbLf & Left$(sTxt, InStr(sTxt, vbNullChar) - 1) End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz
Anzeige
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 15:07:18
Piet
Hallo

wie ich sehe gibt es bereits gute Lösungen, einige Codes so modern das ich da nicht mehr durchblicke.

Ich lade mal meine uralte Ordner auflisten Datei hoch, bei der ich Sheet2 zum Suchen umgestrickt habe.
Vorteil, der uralte Code ist von 1994, läuft heute noch, und findet ALLE Dateien die man suchen will!
https://www.herber.de/bbs/user/174793.xls

mfg Piet
Anzeige
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 15:15:48
Piet
Nachtrag zu: =Zelle("dateiname")

wenn du das in eine Zelle eingibst bekommst du den Pfad + Sheet der geöffneten Datei angezeigt!
Das ist aber nicht das was du willst, du willst ja Ordner + Unterordner nach einer Datei durchsuchen.

mfg Piet
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 13:06:37
Uwe Baier
Hallo Karl-Heinz,
Irgendwas mach ich falsch. Es funktioniert nicht.

Die Befehle im Bereich SUB kann ich grob nachvollziehen, aber was ist das am Anfang???

Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _
ByVal RootPath As String, ByVal InputPathName As String, _
ByVal InputPathBuffer As String) As Long

Kann damit leider nichts anfangen, muss ich dass irgendwo verwenden?

Viele Grüße
Uwe
Anzeige
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 13:13:26
Volti
Da muss alles in ein Modul.
Die verwendete Funktion muss deklariert werden, also auch diesen Teil einfügen.
Mit, es funktioniert nicht, kann man nichts anfangen.
Fehlermeldung?
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 13:27:35
Uwe Baier
Ich will eigentlich beim Starten der Datei also SUB Workbook_open eine Datei in einem Unterordner suchen und mir dann den Pfad wo sich die Datei befindet mir in eine Zelle in ein Tabellenblatt schreiben, damit ich später mit dem Pfad weiterarbeiten kann.

Fehler ist:
Fehler beim Kompilieren: Sub oder Function nicht definiert

Ich habe einfach deine Anweisungen reinkopiert und den Dateinamen welchen ich suche und den Startpfad wo begonnen werden soll geändert.

Ich habe leider nur kleine Grundkenntnisse und kann noch nicht mit allen Anweisungen und Befehlen etwas anfangen.

Danke und Grüße
Uwe
Private Sub Workbook_Open()

Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _
ByVal RootPath As String, ByVal InputPathName As String, _
ByVal InputPathBuffer As String) As Long


Dim sTxt As String * 255, sDatei As String, sStartpfad As String

sDatei = "Ranking.xlsm"
sStartpfad = "U:\Tabellen Turnier\"

If SearchTreeForFile(sStartpfad, sDatei, sTxt) = 0 Then
MsgBox "Datei wurde nicht gefunden!", vbCritical
Else
MsgBox "Gefunden in" & vbLf & Left$(sTxt, InStr(sTxt, vbNullChar) - 1)
End If


End Sub
Anzeige
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 13:52:27
Volti
Bin am Handy, daher nur kurz.
Vielleicht fehlt bei dir die DLL-Datei.
Dann geht es so nicht.
Ggf. später mehr, wenn ich wieder am PC bin.
Gruß KH
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 14:06:10
Uwe Baier
Ok, danke, dann hoffe bis später. Hoffe ich bin dann noch online.
Grüße
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 15:19:15
Volti
Hatte ich eben übersehen. Handy halt.
Die Declare-Anweisung muss außerhalb und vor der Sub stehen.
Anzeige
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 16:07:34
Uwe
Suuuper, funktioniert.

Kannst Du mir noch sagen wie ich jetzt noch den Dateinamen wegkriege damit er mir nur den Pfad ausgibt?

Danke und Grüße
Uwe
AW: Pfad auslesen einer bestimmten Datei
10.01.2025 16:48:00
volti
Eine Idee....

Code:


Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _ ByVal RootPath As String, ByVal InputPathName As String, _ ByVal InputPathBuffer As String) As Long Private Sub Workbook_Open() Dim sTxt As String * 255, sDatei As String, sPfad As String sDatei = "Ranking.xlsm" sPfad = "U:\Tabellen Turnier\" With ActiveSheet.Range("A1") If SearchTreeForFile(sPfad, sDatei, sTxt) = 0 Then .Value = "Kein Pfad ermittelt" Else sPfad = Left$(sTxt, InStr(sTxt, vbNullChar) - 1) .Value = Left$(sPfad, InStrRev(sPfad, "\")) End If End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz
Anzeige
AW: Pfad auslesen einer bestimmten Datei
12.01.2025 17:03:00
Uwe Baier
Super, danke, funktioniert.
Viele Grüße
Uwe
AW: Pfad auslesen einer bestimmten Datei
14.01.2025 09:14:26
Uwe Baier
Sorry, jetzt brauche ich doch noch einmal deine Hilfe.
Ich erkläre mal den ganzen Fall. Ich habe eine Spieledatei wo ich ein Makro habe das wenn Ergebnisse eingetragen sind, den aktuellen Pfad (Pfad = ThisWorkbook.Path) in eine Zelle schreibt. Mit einem anderen Makro kopiere ich alle Ergebnisse, öffne die Rankingdatei in dem angegebenen Pfad
Pfad = Range("M311").Value
Datei = Pfad & "\" & Dateiname & ".xlsm"
Workbooks.Open Filename:=Datei
und schreibe diese dann dort rein. Falls ich feststelle das Ergebnisse fehlen, will ich dann daheim oder im Büro die Korrektur ausführen. Jedoch steht der falsche Pfad in der Zelle. Ich kann die Datei aber nicht nochmal starten, somit will ich den aktuellen Pfad beim Starten der Datei in die Zelle schreiben damit das andere Makro zum kopieren den richtigen Pfad zum öffnen der Rankingdatei hat. Mit deiner Lösung, die hervorragend funktioniert, schreibt er mir den Pfad in die Zelle. Jedoch denke und vermute ich das es ein Wert oder sowas und kein String ist, da in der Zelle der Pfad drinnen steht, jedoch oben in der Befehlszeile steht nichts drinnen. Somit kommt Debugfehler beim öffnen der Datei. eine Zeile vorher wenn ich mit msgbox den Pfad aus der Zelle mir anzeigen lasse, steht der richtige Pfad drinnen. Somit bin ich leider mit meinem Latein am Ende??????????
Ich hoffe Du kannst mir hier nochmal weiterhelfen. Ich vermute man muss den Pfad in einen String umwandeln.

Danke vorab schon mal.
Uwe
Anzeige
AW: Pfad auslesen einer bestimmten Datei
14.01.2025 09:36:51
Volti
Du solltest die (ggf. gekürzte) Datei hier mal hochladen.
Ist das Feld als Text formatiert?
Oder ggf. ' voranstellen, das zwingt den Inhalt als Text.

Gruß KH
AW: Pfad auslesen einer bestimmten Datei
14.01.2025 09:58:11
Uwe Baier
Ja, die Zelle ist als Text formatiert. Ich habe jetzt deine erste Lösung gemacht welches eigentlich super funktitioniert bis auf das in der Zelle der Pfad steht und oben neben der Zelle in der Befehlszeile nichts drinnen ist. Deswegen habe ich die Probleme.
Wie gesagt bei ThisWorkbook.Path funktioniert es und dort steht in der Befehlszeile auch der Pfad drinnen.
Kannst es ja mal bei dir testen und anschauen.
Danke schon mal.

Hier das Makro:

Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _
ByVal RootPath As String, ByVal InputPathName As String, _
ByVal InputPathBuffer As String) As Long
Private Sub Workbook_Open()




Dim sTxt As String * 255, sDatei As String, sStartpfad As String, Pfad As String, Pfad_aktuell As String

sDatei = "Ranking.xlsm"
sStartpfad = ThisWorkbook.Path

If SearchTreeForFile(sStartpfad, sDatei, sTxt) = 0 Then
MsgBox "Kein Pfad für Ranking Datei ermittelt!", vbCritical
Else
If Worksheets("Tabelle1").Range("A2") = "" Then
Pfad = vbLf & Left$(sTxt, InStr(sTxt, vbNullChar) - 14)
Worksheets("Tabelle1").Range("A1").Value = Pfad

Pfad_aktuell = ThisWorkbook.Path
Worksheets("Tabelle1").Range("B1").Value = Pfad_aktuell
End If

Worksheets("Tabelle1").Range("A2").Value = "Formeln_eingetragen"
End If


End Sub
Anzeige
AW: Pfad auslesen einer bestimmten Datei
14.01.2025 10:54:21
volti
Hallo Uwe,

eine Datei oder ein Muster sagt mehr als hundert Prosa-Beschreibungen.

Klicke einfach mal im Bearbeitungsfeld ganz rechts den Pfeil und vergrößere dieses. Dann siehst Du den Text.

Hintergrund:
Pfad = vbLf & Left$(sTxt, InStr(sTxt, vbNullChar) - 14)

Das vbLF ist ein Zeilenumbruch, der müsste dann wohl da weg.
Und was soll das mit den -14?
Da wird vom Rückgabetext ein immer fester Bestandteil abgeschnitten. Sollte der Text kleiner als 14 sein, dürfte es eine Fehlermeldung geben.

Gruß KH
Anzeige
AW: Pfad auslesen einer bestimmten Datei
14.01.2025 11:03:49
Uwe Baier
Super, danke, das war es. Jetzt hab ich den Umbruch der zum Fehler geführt hatte rausgenommen und es läuft. Das -14 hatte ich das er nur den Pfad ausgibt ohne Ranking.xlsm da ich für das andere Makro nur den Pfad benötige um nicht bei allen Spieledateien die Makros umschreiben muss. Nochmals vielen Dank für deine Unterstützung.
Uwe
Anzeige
AW: Pfad auslesen einer bestimmten Datei
14.01.2025 11:11:46
Volti
Zur Entfernung des Dateinamens hatte ich doch eine Lösung präsentiert.

Aber naja, mache wie du denkst.
Gruß KH
AW: Pfad auslesen einer bestimmten Datei
14.01.2025 12:19:37
Uwe Baier
Hallo Karl-Heinz,

ich bin leider noch am Anfang und habe mir einiges selber angeeignet und keine Schulungen gehabt, deswegen verstehe ich einige Befehle nicht und programmiere bestimmt umständlich, was sicherlich manchmal deutlich einfacher geht.
Stimmt, die andere Version hatte ich auch und war der gleiche Fehler. Außerdem hat mir dies mit weniger Anweisungen besser gefallen und ich habe gleich darunter noch einige Befehle mehr geschrieben die ich jetzt bei dir weggelassen hatte.

Trotzdem wirklich super, hilfreich und hat zur Lösung geholfen.
Viele Grüße
Uwe
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18