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

Forumthread: Dateipfad als Variable in VBA

Dateipfad als Variable in VBA
peter
Hallo Freunde
Da meine Versuche nicht weiterfürend sind wende ich mich an Sie.
In einer geöffneten Exceldatei starte ich ein Dialogfeld indem man eine weitere Exceldatei öffnen kann.
Diese sieht so aus.
Application.Dialogs(xlDialogOpen).Show ("Y:\Büro\Rechnungen\*.xls")
Die erste geöffnete Datei ist immer im Ordner "Büro" die weiteren die ich öffnen möchte im Ordner Rechnungen. Nun mein Problem: Leider ist der Laufwerksbuchstabe nicht immer derselbe und deshalb habe ich versucht die mit einer Variablen zu erreichen, leider ohne Erfolg.
Vielleicht könnt Ihr mir helfen.
Danke schon mal im voraus
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Dateipfad als Variable in VBA
06.07.2012 22:42:00
fcs
Hallo Peter,
wenn die 1. Datei aus Ordner "Büro" zum Zeitpunkt des Dialog-Aufrufs die aktive Daei ist, dann geht Variante "aaTest".
Ansonstten geht es auch mit Probieren wie in "bbTest". Das kann aber immer etwas dauern, je nach ANzahl der vorhandenen Laufwerke.
Gruß
Franz
Sub aaTest()
Dim strPath As String
strPath = "\Rechnungen\*.xls"
Application.Dialogs(xlDialogOpen).Show (ActiveWorkbook.Path & strPath)
End Sub
'oder mit der Versuch-und-Fehler-Methode
Sub bbTest()
Dim bolFound As Boolean, strPath As String, strLaufwerk As String, i As Integer
strPath = ":\Büro\Rechnungen\*.xls"
For i = 67 To 90 '67=C, 90=Z
strLaufwerk = Chr(i)
If Dir(strLaufwerk & strPath)  "" Then
bolFound = True
Exit For
End If
Next
If bolFound = True Then
Application.Dialogs(xlDialogOpen).Show (strLaufwerk & strPath)
Else
MsgBox "Verzeichnis """ & strPath & """ auf keinem Laufwerk gefunden", _
vbInformation + vbOKOnly, "Datei öffnen-Dialg anzeigen"
End If
End Sub

Anzeige
AW: Dateipfad als Variable in VBA
06.07.2012 22:54:21
peter
Hallo Franz
Super "aaTest" hat auf Anhieb geklappt!!!
Vielen Dank nochmal
AW: Dateipfad als Variable in VBA
06.07.2012 23:13:57
peter
Ich bitte nochmal um Hilfe
Bei diesem Script geht´s mir genauso.
Das Tabellenblatt wird in den Ordner Rechnungen abgespeichert. "sicherung" ist auch eine Variable und wieder geht es um den Laufwerksbuchstaben.
ActiveWorkbook.SaveAs ("Y:\Büro\Rechnungen\" & (sicherung))
Vielen Dank im voraus
Peter
Anzeige
AW: Dateipfad als Variable in VBA
06.07.2012 23:47:39
fcs
Hallo Peter,
welche Variante benutzt werden muss hängt davon ab, ob die zu sichernde aktive Datei im gleichen Verzeichnis steht wie die Sicherungskopie.
Die Variante "ddTest" gilt wenn beide Verzeichnisse identisch sind.
Hinweis: Beim Erstellen von Sicherungskopien ist ggf. die Methode "SaveCopyAs" die bessere Variante siehe "eeTest"
Gruß
Franz
Sub cctest()
Dim strLaufwerk As String, strPath As String, sicherung As String
With ActiveWorkbook
sicherung = "Copy_" & Format(Now, "YYYY-MM-DD hhmmss ") & .Name 'Test-Zeile
strLaufwerk = Left(.Path, 1)
strPath = ":\Büro\Rechnungen\"
.SaveAs Filename:=strLaufwerk & strPath & sicherung
End With
End Sub
'oder
Sub ddTest()
Dim sicherung As String
With ActiveWorkbook
sicherung = "Copy_" & Format(Now, "YYYY-MM-DD hhmmss ") & .Name 'Test-Zeile
.SaveAs Filename:=.Path & "\" & sicherung
End With
End Sub
Sub eeTest()
Dim sicherung As String
With ActiveWorkbook
sicherung = "Copy_" & Format(Now, "YYYY-MM-DD hhmmss ") & .Name 'Test-Zeile
If .Saved = False Then .Save
.SaveCopyAs Filename:=.Path & "\" & sicherung
End With
End Sub

Anzeige
AW: Dateipfad als Variable in VBA
07.07.2012 09:02:07
Peter
Hallo Franz
Vielen Dank für Deine professionelle Hilfe!!!!
Eigentlich haben alle funktioniert, in meinem Beispiel habe ich "Sub cctest" verwendet.
Nochmal großen Dank
Gruß Peter
;
Anzeige
Anzeige

Infobox / Tutorial

Dateipfad als Variable in VBA nutzen


Schritt-für-Schritt-Anleitung

Um den Excel VBA Pfad auszuwählen und in einer Variable zu speichern, kannst du folgende Schritte befolgen:

  1. Öffne das VBA-Editor-Fenster in Excel (Alt + F11).

  2. Erstelle ein neues Modul (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Füge den folgenden Code in das Modul ein:

    Sub aaTest()
        Dim strPath As String
        strPath = "\Rechnungen\*.xls"
        Application.Dialogs(xlDialogOpen).Show (ActiveWorkbook.Path & strPath)
    End Sub
  4. Führe das Makro aus (F5), um das Dialogfeld zu öffnen und die Excel-Datei auszuwählen.


Häufige Fehler und Lösungen

Hier sind einige häufige Fehler und deren Lösungen:

  • Fehler: Das Dialogfeld öffnet sich nicht.

    • Lösung: Stelle sicher, dass die aktive Datei im richtigen Ordner ist. Der Pfad muss korrekt sein.
  • Fehler: Der Laufwerksbuchstabe ist nicht korrekt.

    • Lösung: Verwende die Schleife aus dem folgenden Code, um alle Laufwerke zu überprüfen:
    Sub bbTest()
        Dim bolFound As Boolean, strPath As String, strLaufwerk As String, i As Integer
        strPath = ":\Büro\Rechnungen\*.xls"
        For i = 67 To 90 '67=C, 90=Z
            strLaufwerk = Chr(i)
            If Dir(strLaufwerk & strPath) <> "" Then
                bolFound = True
                Exit For
            End If
        Next
        If bolFound = True Then
            Application.Dialogs(xlDialogOpen).Show (strLaufwerk & strPath)
        Else
            MsgBox "Verzeichnis """ & strPath & """ auf keinem Laufwerk gefunden", vbInformation + vbOKOnly, "Datei öffnen-Dialog anzeigen"
        End If
    End Sub

Alternative Methoden

Neben der Verwendung von Application.Dialogs, kannst du auch direkt den Dateipfad in einer Variable speichern und verwenden:

  1. Speichern unter einem spezifischen Dateipfad:

    Sub cctest()
        Dim strLaufwerk As String, strPath As String, sicherung As String
        With ActiveWorkbook
            sicherung = "Copy_" & Format(Now, "YYYY-MM-DD hhmmss ") & .Name
            strLaufwerk = Left(.Path, 1)
            strPath = ":\Büro\Rechnungen\"
            .SaveAs Filename:=strLaufwerk & strPath & sicherung
        End With
    End Sub
  2. Verwende SaveCopyAs für Sicherungskopien:

    Sub eeTest()
        Dim sicherung As String
        With ActiveWorkbook
            sicherung = "Copy_" & Format(Now, "YYYY-MM-DD hhmmss ") & .Name
            If .Saved = False Then .Save
            .SaveCopyAs Filename:=.Path & "\" & sicherung
        End With
    End Sub

Praktische Beispiele

Hier sind einige praktische Anwendungen des strPath in VBA:

  • Dateien öffnen:

    Sub OpenFile()
        Dim strPath As String
        strPath = "Y:\Büro\Rechnungen\*.xls"
        Application.Dialogs(xlDialogOpen).Show strPath
    End Sub
  • Automatisches Speichern einer Datei:

    Sub SaveFile()
        Dim strPath As String
        strPath = "Y:\Büro\Rechnungen\"
        ActiveWorkbook.SaveAs Filename:=strPath & "NeueDatei.xlsx"
    End Sub

Tipps für Profis

  • Verwende Dim strPath As String immer zu Beginn deiner Subroutinen, um die Lesbarkeit zu erhöhen.
  • Nutze Fehlerbehandlungsroutinen (On Error Resume Next), um unerwartete Fehler beim Zugriff auf den Dateipfad abzufangen.
  • Testen von Laufwerken: Wenn du häufig zwischen verschiedenen Laufwerken wechselst, erstelle eine Funktion, die alle verfügbaren Laufwerke auflistet.

FAQ: Häufige Fragen

1. Wie kann ich den aktuellen Dateipfad in einer Variable speichern? Du kannst den aktuellen Dateipfad mit ActiveWorkbook.Path speichern. Beispiel:

Dim strPath As String
strPath = ActiveWorkbook.Path

2. Was mache ich, wenn der Pfad nicht gefunden wird? Prüfe, ob der Pfad korrekt ist und ob die Datei existiert. Nutze die Dir-Funktion, um zu überprüfen, ob der Pfad gültig ist.

3. Wie kann ich den Laufwerksbuchstaben dynamisch ermitteln? Nutze eine Schleife, um alle Buchstaben von C bis Z zu testen, wie im bbTest Beispiel gezeigt.

4. Gibt es eine Möglichkeit, den Benutzer zur Eingabe eines Pfades aufzufordern? Ja, du kannst Application.FileDialog(msoFileDialogFolderPicker) verwenden, um den Benutzer einen Ordner auswählen zu lassen.

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