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

Dateiname mit VBA bestimmen

Forumthread: Dateiname mit VBA bestimmen

Dateiname mit VBA bestimmen
23.09.2016 11:41:50
André
Hallo zusammen,
ich möchte per VBA eine Datei bearbeiten, die immer im identischen Verzeichnis liegt. Die Dateien sind alle unterschiedlich benannt.
Ich bräuchte hierzu am besten ein Fenster, dass sich öffnet (Browser wie zB beim "Öffnen" von Dateien). Dort will ich die Datei anklicken und dann den vollständigen Namen der Datei in VBA haben.
Als Praxisbeispiel:
Ich habe eine Hauptdatei "Preisvergleich.xlsm". Im gleichen Verzeichnis liegen die Dateien:
Preis012016.xls
Preis022016.xls
03_2016_Preis.xls
Ich möchte die zu bearbeitende Datei über den Browser auswählen. In diesem Fall die 03_2016_Preis.xls, die dann verarbeitet wird. Habe also dann den Pfad zur Datei in einer Variable hinterlegt um damit zu spielen.

Ich weiß, etwas kompliziert dargestellt. Hab mir dennoch Mühe gegeben :). Eventuell gibt es auch alternative Lösungen?
Danke für alle Kommentare!
VG
André
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname mit VBA bestimmen
23.09.2016 11:57:05
UweD
hallo
so?

Sub André()
Dim Pfad$, Vorgabe$, Dateiname$
Dim Dlg As FileDialog
Vorgabe = "*.xls"
Pfad = "C:\Temp\"
Set Dlg = Application.FileDialog(msoFileDialogFilePicker) 'Datei wählen
With Dlg
.AllowMultiSelect = False
.InitialFileName = Pfad & Vorgabe
.InitialView = msoFileDialogViewDetails 'Anzeige des Dialogs - die Dateien als Detail
End With
If Dlg.Show = True Then
Dateiname = Dlg.SelectedItems(1) ' der Name der ausgewählten Datei
'mach was damit
'Workbooks.Open Filename:=Dateiname
Else
'keine Datei ausgewählt
End If
End Sub
LG UweD
Anzeige
AW: Dateiname mit VBA bestimmen
23.09.2016 12:07:06
André
Klasse Uwe,
vielen Dank. Zumindest in Textform hab ich dann den Link schonmal ;-). Funktioniert bis hierhin super.
Danke!
Gruß
André
AW: Dateiname mit VBA bestimmen
23.09.2016 15:39:58
UweD
Hier nochmal aufgespaltet...
Sub André()
    Dim Pfad$, Vorgabe$, Komplettname$, Datei$, NeuPfad$
    Dim Dlg As FileDialog
    Vorgabe = "*.xls"
    Pfad = "C:\Temp\" ' Startpfad für die Auswahl 
    Set Dlg = Application.FileDialog(msoFileDialogFilePicker) 'Datei wählen 
    With Dlg
        .AllowMultiSelect = False
        .InitialFileName = Pfad & Vorgabe
        .InitialView = msoFileDialogViewDetails 'Anzeige des Dialogs - die Dateien als Detail 
    End With
    If Dlg.Show = True Then
        Komplettname = Dlg.SelectedItems(1) ' der Name der ausgewählten Datei inkl. Pfad 
        Datei = Dir(Komplettname) ' nur Dateiname inkl. Ext 
        
        ' der tatsächlich ausgewählte Pfad 
        NeuPfad = Left(Komplettname, Len(Komplettname) - Len(Datei))
        'mach was damit 
        'Workbooks.Open Filename:=Komplettname 
    Else
        'keine Datei ausgewählt 
    End If
End Sub
LG UweD
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateiname mit VBA bestimmen


Schritt-für-Schritt-Anleitung

Um den Dateinamen mit VBA auszulesen und die Datei über einen Dialog auszuwählen, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsm)" > Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:
Sub DateinameAuslesen()
    Dim Pfad As String
    Dim Vorgabe As String
    Dim Dlg As FileDialog

    Vorgabe = "*.xls"
    Pfad = "C:\Temp\" ' Startpfad für die Auswahl
    Set Dlg = Application.FileDialog(msoFileDialogFilePicker) ' Datei wählen

    With Dlg
        .AllowMultiSelect = False
        .InitialFileName = Pfad & Vorgabe
        .InitialView = msoFileDialogViewDetails ' Anzeige des Dialogs - die Dateien als Detail
    End With

    If Dlg.Show = True Then
        MsgBox "Ausgewählte Datei: " & Dlg.SelectedItems(1) ' Vollständiger Dateiname
    Else
        MsgBox "Keine Datei ausgewählt"
    End If
End Sub
  1. Passe den Pfad (Pfad = "C:\Temp\") an, um das Verzeichnis deiner Dateien anzugeben.
  2. Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle DateinameAuslesen und klicke auf "Ausführen".

Damit wird ein Datei-Dialog geöffnet, in dem du die gewünschte Datei auswählen kannst. Der vollständige Dateiname wird dann in einer MessageBox angezeigt.


Häufige Fehler und Lösungen

  • Fehler: "Das angegebene Verzeichnis wurde nicht gefunden."

    • Lösung: Überprüfe den Pfad, den du in der Variable Pfad angegeben hast. Stelle sicher, dass der Pfad existiert und korrekt geschrieben ist.
  • Fehler: "Die Datei kann nicht geöffnet werden."

    • Lösung: Stelle sicher, dass die Datei nicht schreibgeschützt ist und du die notwendigen Berechtigungen hast.

Alternative Methoden

Wenn du den Excel VBA Dateinamen nicht über einen Dialog auswählen möchtest, kannst du auch eine Liste der Dateien in einem bestimmten Verzeichnis auslesen und dem Benutzer zur Auswahl anbieten:

Sub DateienAuflisten()
    Dim Datei As String
    Dim Pfad As String
    Pfad = "C:\Temp\"
    Datei = Dir(Pfad & "*.xls")

    Do While Datei <> ""
        Debug.Print Datei ' Hier kannst du die Datei weiterverarbeiten
        Datei = Dir
    Loop
End Sub

Dieser Code wird alle .xls-Dateien im angegebenen Verzeichnis auflisten.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den vba dateiname in verschiedenen Szenarien verwenden kannst:

  1. Öffnen einer Datei und Kopieren von Daten:
Sub DatenKopieren()
    Dim Dlg As FileDialog
    Dim Datei As String

    Set Dlg = Application.FileDialog(msoFileDialogFilePicker)

    With Dlg
        .AllowMultiSelect = False
        If .Show = True Then
            Datei = .SelectedItems(1)
            Workbooks.Open Datei
            ' Hier kannst du Daten kopieren
        End If
    End With
End Sub
  1. Speichern einer Datei an einem bestimmten Ort:
Sub DateiSpeichern()
    Dim Dlg As FileDialog
    Set Dlg = Application.FileDialog(msoFileDialogSaveAs)

    With Dlg
        .FilterIndex = 1
        If .Show = True Then
            ' Speichern unter den angegebenen Dateinamen
            ActiveWorkbook.SaveAs Filename:=.SelectedItems(1)
        End If
    End With
End Sub

Tipps für Profis

  • Nutze die Funktion VBA.filename oder VBA.fileDialog, um die Benutzererfahrung zu verbessern.
  • Implementiere Fehlerbehandlungen, um unvorhergesehene Probleme zu vermeiden.
  • Experimentiere mit verschiedenen Filteroptionen in den Dialogen, um Benutzern die Auswahl der richtigen Dateien zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad und Dateinamen auslesen? Du kannst den Code anpassen, um den vollständigen Pfad und den Dateinamen mit Dlg.SelectedItems(1) zu erhalten und weiterzuverarbeiten.

2. Kann ich mehrere Dateien auswählen? Ja, setze .AllowMultiSelect = True im FileDialog. Beachte, dass du dann die ausgewählten Dateien in einer Schleife verarbeiten musst.

3. Was ist der Unterschied zwischen msoFileDialogFilePicker und msoFileDialogSaveAs? msoFileDialogFilePicker wird verwendet, um Dateien auszuwählen, während msoFileDialogSaveAs dazu dient, eine Datei zu speichern oder einen neuen Dateinamen anzugeben.

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