Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateipfad in Zelle schreiben

Dateipfad in Zelle schreiben
26.02.2019 16:00:47
Gregy
Hallo,
mit den Befehlen varName_imp = Right$(varFile_imp, Len(varFile_imp) - InStrRev(varFile_imp, "\"))
und
Workbooks(Stamm_imp).Sheets("Liste").Range("C3").Value = varFile_imp
hole ich mir den Pfad einer anderen Datei und lege den Namen zur späteren Verwendung in Zelle C3 Sheet Liste. Nun ist in meinem Pfad leider auch die Datei mit angefügt, was mir im späteren Verlauf (bei Verwendung) einen Fehler reinknallt (Pfad nicht gefunden). Wie kann ich den Dateinamen inkl. Dateiendung aus dem Pfad entfernen?
Vielen Dank
Gruß Gregy
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateipfad in Zelle schreiben
26.02.2019 16:13:06
Hajo_Zi
Halle Gregory,
suche mit instrev "\"

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Dateipfad in Zelle schreiben
26.02.2019 16:16:17
Gregy
Hallo Hajo_Zi,
vielen Dank für Deine Antwort. In dem ersten Teile suche ich doch instrev"\". Oder was meinst Du?
Zweite Frage: wie ist das zu verstehen Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.

Gruß Gregy
Anzeige
AW: Dateipfad in Zelle schreiben
26.02.2019 16:22:43
Hajo_Zi
Hallo Gregory,
wenn man es richtig schreibt geht es.
Option Explicit
Sub n()
Dim varFile_imp As String
varFile_imp = "C:\1256\123,xlsm"
MsgBox Left(varFile_imp, Len(varFile_imp) - InStrRev(varFile_imp, "\"))
End Sub
Über Beiträge von diesen Pesonen werde ich nicht benachrichtigt.
Der Rest sollte klar sein.
Gruß Hajo
Anzeige
das ist falsch...
26.02.2019 16:28:39
Rudi
... und funktioniert nur zufällig, Hajo.
mit
varFile_imp = "C:\abcdefghi\123.xlsm"
kommt
C:\abcde
raus.
Sub n()
Dim varFile_imp As String
varFile_imp = "C:\1256\123,xlsm"
MsgBox Left(varFile_imp,  InStrRev(varFile_imp, "\"))
End Sub
Gruß
Rudi
Anzeige
AW: Dateipfad in Zelle schreiben
26.02.2019 16:29:52
Nepumuk
Hallo Gregy,
so:
varFolder_imp = Left$(varFile_imp, InStrRev(varFile_imp, "\"))

Gruß
Nepumuk
AW: Dateipfad in Zelle schreiben
26.02.2019 18:05:29
Gregy
Vielen Dank an alle! habe ich auch so umgesetzt. Jetzt tritt folgender Fehler auf
Laufzeitfehler 9:
Index außerhalb des gültigen Bereichs

Und zwar in der Zeile lstRow = Workbooks(varName_imp).Sheets("GAEB_Konverter_LV").Cells(Rows.Count, 4).End(xlUp).Row
Interessanterweise bekomme ich das Phänomen nicht wieder wech...
Hier der gesamte Code
Option Explicit
Dim Stamm_imp As String
Dim varFile_imp As Variant
Dim varName_imp As Variant
Dim Blatt_imp As String
Public Sub gaeb_import()
Application.ScreenUpdating = False
Dim lstRow As Long
'    On Error GoTo Err
Stamm_imp = ActiveWorkbook.Name
varFile_imp = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "XLSx", " _
Auswahl", False)
If TypeName(varFile_imp) Like "Boolean" Then
MsgBox "Keine Datei gewählt!", vbInformation
Exit Sub
Else
varName_imp = Left$(varFile_imp, InStrRev(varFile_imp, "\"))
Workbooks.Open varFile_imp
lstRow = Workbooks(varName_imp).Sheets("GAEB_Konverter_LV").Cells(Rows.Count, 4).End( _
xlUp).Row
Workbooks(Stamm_imp).Sheets("Liste").Range("C3").Value = varFile_imp
Workbooks(varName_imp).Sheets("GAEB_Konverter_LV").Range("B2:B" & lstRow - 3).Copy
Workbooks(Stamm_imp).Sheets("Kalkulation").Range("C5").PasteSpecial xlPasteValues
Workbooks(varName_imp).Sheets("GAEB_Konverter_LV").Range("C2:C" & lstRow - 3).Copy
Workbooks(Stamm_imp).Sheets("Kalkulation").Range("D5").PasteSpecial xlPasteValues
Workbooks(varName_imp).Sheets("GAEB_Konverter_LV").Range("D2:F" & lstRow - 3).Copy
Workbooks(Stamm_imp).Sheets("Kalkulation").Range("E5").PasteSpecial xlPasteValues
Workbooks(varName_imp).Sheets("GAEB_Konverter_LV").Range("G2:G" & lstRow - 3).Copy
Workbooks(Stamm_imp).Sheets("Kalkulation").Range("BB5").PasteSpecial xlPasteValues
Workbooks(varName_imp).Close
Application.CutCopyMode = False
End If
Sheets("Kalkulation").Range("E5").Select
Exit Sub
Err:
Call MsgBox("FEHLER" _
& vbCrLf & "Bitte wenden Sie sich an den Administrator" _
, vbExclamation, "Fehler")
End Sub
HAt jemand eine Idee? Ich habe dem Dim schon Double zugewiesen, bringt aber auch nix :-/
Vielen Dank!
Anzeige
AW: Dateipfad in Zelle schreiben
26.02.2019 18:49:55
Mullit
Hallo,
na guck doch mal genau: ;-)
Workbooks.Open varFile_imp
lstRow = Workbooks(varName_imp)

und besser noch Du nutzt gleich Dein Objekt, was Dir beim Öffnen der Mappe zurückgegeben wird:
Option Explicit
Public Sub gaeb_import()
Dim objWorkbook As Workbook
Set objWorkbook = Workbooks.Open(Filename:=varFile_imp)
lstRow = objWorkbook.Worksheets("GAEB_Konverter_LV").Cells(Rows.Count, 4).End( _
xlUp).Row
End Sub

Außerdem proggst Du ohne Option Explicit, Deine ganzen Variablen sind nicht deklariert, nix gut :-(, sonst wäre Dir der Fehler schon vorher aufgefallen, Deine fehlerhafte Variable ist eine Variant-Var. ohne Wert, lies mal das:
http://www.online-excel.de/excel/singsel_vba.php?f=4
Gruß, Mullit
Anzeige
AW: Dateipfad in Zelle schreiben
26.02.2019 18:58:17
Mullit
Hallo nochmal,
ich seh grad Du verwendest Option Explicit hat ich außerhalb des Code-Blocks übersehen und hast die Variablen global deklariert, das ist gar nicht nötig, wenn Du sie nur in der Sub-Prozedur verwendest, mußt Du sie auch dort deklarieren.
Der Fehler resultiert also daraus, daß Du ein anderes Workbook öffnest, als Du in der zweiten Zeile ansprichst.
Gruß, Mullit
Anzeige
AW: Dateipfad in Zelle schreiben
26.02.2019 20:09:43
Mullit
Und nochmal Hallo...;-)
ähem ja und ich seh grad Dein Code hatte sich jetzt ja dahingehend geändert, daß Du jetzt den Workbook-Namen haben willst, wäre also:
varName_imp = Right$(varFile_imp, InStrRev(varFile_imp, "\"))
...Aber nimm besser gleich das Objekt...;-)
Gruß, Mullit
Anzeige
AW: Dateipfad in Zelle schreiben
26.02.2019 16:26:25
EtoPHG
Hallo Gregy,
Du willst doch nicht den rechten Teil des Strings, sondern den linken!
varName_imp = Left$(varFile_imp, InStrRev(varFile_imp, "\"))
Gruess Hansueli
AW: Dateipfad in Zelle schreiben
26.02.2019 16:24:01
Rudi
Hallo,
Workbooks(Stamm_imp).Sheets("Liste").Range("C3").Value = Left$(varFile_imp, InStrRev(varFile_imp, "\"))
Gruß
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateipfad in Excel-Zelle einfügen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei.

  2. Öffne den VBA-Editor (drücke ALT + F11).

  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine_datei)", wähle "Einfügen" und dann "Modul".

  4. Füge den folgenden VBA-Code ein, um den Dateipfad in eine Zelle zu schreiben:

    Option Explicit
    Sub DateipfadInZelle()
       Dim varFile_imp As String
       varFile_imp = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "Wähle eine Datei")
    
       If varFile_imp <> "False" Then
           ' Hier wird der Dateipfad in Zelle C3 der aktiven Tabelle eingefügt
           ActiveSheet.Range("C3").Value = Left$(varFile_imp, InStrRev(varFile_imp, "\"))
       Else
           MsgBox "Keine Datei gewählt!"
       End If
    End Sub
  5. Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8, wähle "DateipfadInZelle" und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Laufzeitfehler 9: Index außerhalb des gültigen Bereichs: Dieser Fehler tritt auf, wenn du versuchst, auf ein Blatt oder eine Arbeitsmappe zuzugreifen, die nicht existiert. Stelle sicher, dass die Namen korrekt sind.

  • Falscher Dateipfad in Zelle: Wenn der Dateiname auch im Pfad enthalten ist, kann dies mit dem richtigen Befehl behoben werden. Achte darauf, den richtigen VBA-Befehl zu verwenden, um nur den Pfad zu extrahieren:

    varName_imp = Left$(varFile_imp, InStrRev(varFile_imp, "\"))

Alternative Methoden

  • Excel-Funktion verwenden: Du kannst auch die Funktion =CELL("filename") verwenden, um den vollständigen Pfad der aktiven Arbeitsmappe anzuzeigen. Um nur den Pfad zu extrahieren, kannst du eine Kombination mit LEFT und FIND nutzen.

  • VBA ohne Benutzerinteraktion: Du kannst den Pfad automatisch für die aktuelle Arbeitsmappe setzen, ohne eine Datei auszuwählen:

    ActiveSheet.Range("C3").Value = ThisWorkbook.Path

Praktische Beispiele

  1. Dateipfad in Zelle einfügen:

    ActiveSheet.Range("C3").Value = Application.ActiveWorkbook.FullName
  2. Speicherort anzeigen:

    ActiveSheet.Range("C4").Value = ThisWorkbook.Path
  3. Speicherpfad in einer anderen Zelle:

    ActiveSheet.Range("C5").Value = Left$(ActiveWorkbook.FullName, InStrRev(ActiveWorkbook.FullName, "\"))

Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler zu vermeiden, da alle Variablen deklariert werden müssen.

  • Nutze Objekte: Anstatt Variablen wie varFile_imp zu verwenden, kannst du Objekte direkt verwenden, um die Effizienz deiner VBA-Programme zu verbessern.

    Dim objWorkbook As Workbook
    Set objWorkbook = Workbooks.Open(varFile_imp)
  • Fehlermeldungen optimieren: Setze On Error Resume Next und On Error GoTo 0, um die Fehlerbehandlung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich den Dateipfad in einer bestimmten Zelle anzeigen?
Verwende den VBA-Befehl, um den Pfad in die gewünschte Zelle zu schreiben, wie im Beispiel in der Schritt-für-Schritt-Anleitung beschrieben.

2. Was kann ich tun, wenn mein VBA-Code nicht funktioniert?
Überprüfe, ob alle Variablen korrekt deklariert sind und ob du die richtigen Arbeitsblattnamen verwendest. Setze Option Explicit ein, um auf nicht deklarierte Variablen aufmerksam gemacht zu werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige