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

Forumthread: Dateipfad mit VBA öffnen

Dateipfad mit VBA öffnen
06.12.2016 16:26:47
Sascha
Hallo zusammen,
ich habe seit kurzem die Aufgabe eine vorhandene VBA-Programmierung zu überarbeiten und anzupassen. Da ich aber kein Experte auf dem Gebiet bin, bin ich schnell auf ein Problem gestoßen, bei dem ich hoffe, ihr könnt mir helfen.
Bei dem Problem geht es darum, dass aus .xlsm-Dateien Daten mit einer VBA-Programmierung in diese Excel-Datei eingetragen werden sollen. Ich weiß, dass es am einfachsten wäre, den Datei-Pfad genau anzugeben. Allerdings sind die Quelldateien in verschiedenen Ordnern und diese Ordner werden immer wieder verschoben, daher scheidet die Lösung schon mal aus.
Hier mal den Ausschnitt aus dem Code, wie er mir vorliegt.Wenn ich das ganze debugge, wird der Fehler bei der Zeile sDatei = Range ("PFAD_0815").Value & ".xlsm" angezeigt.
Private Sub cmdWerteAktualisieren_Click()
'Variablen deklarieren
Dim sDatei As String 'Speicherort + Dateiname + Endung
Dim sKW As String 'Ausgewählte Kalenderwoche
Dim oQuelle As Object 'SourceBook festlegen
Dim sDateiname As String
'---------
Dim Schrittweite As Double
Dim Länge As Double
'---------
'Bildschirm-Update deaktivieren
Application.ScreenUpdating = False
'---Progressbar
Länge = 0
Schrittweite = Label2.Width / 8
lblLadebalken.Caption = "Daten werden eingelesen!"
'---------
'Ausgewählte Kalenderwoche in Variable schreiben
sKW = Me.cboKalenderwoche.Value
sDatei = Range("PFAD_0815").Value & ".xlsm"
sDateiname = Range("DATEINAME_0815").Value
Die Datei soll lesend geöffnet werden.
Ich hoffe, ihr könnt mir helfen, denn ich sehe den Fehler nicht und auch in den vielen Foren habe ich keine Hilfe dazu gefunden.
Kann der Fehler möglicherweise daran liegen, dass in den Quellordnern inzwischen auch andere Dateien sind, die fast die gleiche Bezeichnung haben? Z.B. heißt die Datei, die ich aufrufen möchte "Datei_0815.xlsm" und die andere "Datei_0815 xyz.xlsm"?
Wenn das das Problem ist, wie kann ich das umgehen?
Danke schon mal im Voraus.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateipfad mit VBA öffnen
06.12.2016 16:35:09
Sascha
Ich sollte noch sagen, dass der angezeigte Fehler der 'Laufzeitfehler 1004' ist. Der Range passt nicht zu dem Objekt '_Global'.
AW: Dateipfad mit VBA öffnen
07.12.2016 12:14:58
Matthias
Hallo!
Probiere mal, ob der Code funktioniert, wenn du bei deinen Range noch die genaue Tabelle (Quelle) davorsetzt. Bspw. so
Worksheets("Blattname").Range("PFAD_0815").Value & ".xlsm"
Könnte sonst sein, dass dein Code nicht genau weiß, in welchem Blatt er die Range mit dem Namen suchen soll. Startest den Code vermtl. aus einer Userform heraus. Im Zweifel auch nochmal prüfen, ob der Rangename identisch mit dem Wert im Code ist (keine Leerzeichen davor oder dahinter etc. ).
Das Öffnen sollte dann so gehen:
workbooks.open sDatei & "/" & sDateiname,,true
Wobei ich sDatei eher in sPfad (oder ähnliches) umbenennen würde. Dann wird es ersichtlicher
VG
Matthias
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateipfad mit VBA öffnen


Schritt-für-Schritt-Anleitung

Um einen Dateipfad in Excel mit VBA zu öffnen, befolge diese Schritte:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projekt-Explorer auf "VBAProject (deinExcelDateiname)" und wähle Einfügen > Modul.
  3. Kopiere und füge den folgenden Code ein:

    Private Sub cmdWerteAktualisieren_Click()
       Dim sDatei As String
       Dim sKW As String
       Dim oQuelle As Object
       Dim sDateiname As String
       Dim Schrittweite As Double
       Dim Länge As Double
    
       Application.ScreenUpdating = False
       Länge = 0
       Schrittweite = Label2.Width / 8
       lblLadebalken.Caption = "Daten werden eingelesen!"
    
       sKW = Me.cboKalenderwoche.Value
       sDatei = Worksheets("Blattname").Range("PFAD_0815").Value & ".xlsm"
       sDateiname = Worksheets("Blattname").Range("DATEINAME_0815").Value
    
       ' Datei öffnen
       Workbooks.Open sDatei & "/" & sDateiname, , True
    End Sub
  4. Ersetze "Blattname":

    • Setze den Namen des Arbeitsblattes anstelle von "Blattname" ein, in dem sich die benannten Bereiche befinden.
  5. Starte das Makro:

    • Du kannst das Makro über eine Schaltfläche auf deinem Arbeitsblatt starten.

Häufige Fehler und Lösungen

Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn der Range nicht gefunden werden kann. Stelle sicher, dass der Range-Name korrekt ist und dass du den richtigen Arbeitsblattnamen angegeben hast.

Problem mit ähnlichen Dateinamen: Wenn mehrere Dateien ähnliche Namen haben, überprüfe, ob der vollständige Pfad korrekt und eindeutig ist. Du kannst auch die Dateinamen verifizieren, bevor du versuchst, sie zu öffnen.


Alternative Methoden

Eine alternative Methode, um den Excel VBA Dateipfad auszulesen, ist die Verwendung eines Dateidialogs:

Dim fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

If fDialog.Show = -1 Then
    sDatei = fDialog.SelectedItems(1)
    Workbooks.Open sDatei
End If

Diese Methode erlaubt es dir, eine Datei manuell auszuwählen, was besonders nützlich ist, wenn sich die Quelldateien häufig ändern.


Praktische Beispiele

  • Beispiel für das Auslesen eines Dateipfades: Angenommen, du hast einen benannten Bereich mit dem Namen PFAD_0815, der den Pfad zur Datei enthält. Verwende den oben angegebenen VBA-Code, um die Datei zu öffnen.

  • Beispiel für das Öffnen einer Datei im gleichen Verzeichnis:

    sDatei = ThisWorkbook.Path & "\Datei_0815.xlsm"
    Workbooks.Open sDatei

Tipps für Profis

  • Vermeide es, relative Pfade zu verwenden, wenn du mit mehreren Ordnern arbeitest. Nutze stattdessen absolute Pfade oder Dateidialoge.
  • Überlege, die Error Handling-Mechanismen in deinem Code zu integrieren, um unerwartete Fehler besser zu handhaben.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Dateipfad korrekt ist?
Verwende die Debug.Print-Anweisung, um den Wert des Dateipfades im Direktfenster anzuzeigen und zu überprüfen.

2. Was kann ich tun, wenn ich den Fehler "Datei nicht gefunden" erhalte?
Überprüfe, ob der angegebene Pfad und der Dateiname korrekt und vollständig sind. Achte auf Tippfehler und die Dateiendung.

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