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

Verzeichnis bzw. Pfad an Makro übergeben

Forumthread: Verzeichnis bzw. Pfad an Makro übergeben

Verzeichnis bzw. Pfad an Makro übergeben
Brend
Hallo Freaks,
ich bitte um Eure Hilfe:
Bis dato muss der Dateipfad für das Einlesen der txct-Dateien im Makro hinterlegt werden.
Kann man den Pfad durch Auswahl des Verzeichnisses an das Makro übergeben?
Kann die Speicherung als "Text (tabstopp-getrennt)" - Datei gleich angeboten werden, indem sich das Verzeichnis auf der Ebene "Arbeitsplatz" öffnet?
https://www.herber.de/bbs/user/67809.xls
Vielen Dank vorab!
Brend
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Verzeichnis bzw. Pfad an Makro übergeben
06.02.2010 17:21:46
Ramses
Hallo
1. "...Kann man den Pfad durch Auswahl des Verzeichnisses an das Makro übergeben?..."
Das hier als Beispiel
Dim SuchDialog As FileDialog
Set SuchDialog = Application.FileDialog(msoFileDialogFilePicker)
'Dialog für EXCEL XP und höher
'Auswählen wo die TEXT-Dateien liegen
With SuchDialog
.Title = "Bitte wählen Sie eine Datei aus"
'Environ(25) ermittelt den Aktuellen Userpfad
.InitialFileName = Environ(25) & "\Eigene Dateien\"
.ButtonName = "Auswahl übernehmen"
.Show
If .SelectedItems.Count = 0 Then
MsgBox "Sie haben keine Datei gewählt", vbInformation
Set SuchDialog = Nothing
Exit Sub
Else
Workbooks.OpenText (.SelectedItems(1))
End If
End With
2. "...Kann die Speicherung als "Text (tabstopp-getrennt)" - Datei gleich angeboten werden..:"
Ja, das kannst du aber mit dem Makrorekorder aufzeichnen
Gruss Rainer
Anzeige
@Ramses
07.02.2010 21:34:38
Brend
Hallo Ramses,
ich habe Deinen Code eingebaut , aber es klappt leider nicht. Es soll der Pfad an das makro Modul1_Start" übergeben werden. Willst Du vielleicht mal schau'n?
https://www.herber.de/bbs/user/67826.xls
Grüße und Danke
Brend
Anzeige
AW: @Ramses
08.02.2010 19:25:49
Ramses
Hallo
Das Makro muss so angepasst werden
Option Explicit

Sub Start()
    Dim Quelle$, ZielAll$
    Dim i As Integer
    Dim SuchDialog As FileDialog
    Set SuchDialog = Application.FileDialog(msoFileDialogFolderPicker)
    'Alle txt-Dateien des nachstehenden Pfades sollen eingelesen werden
    'Dialog für EXCEL XP und höher
    'Auswählen wo die TEXT-Dateien liegen
    With SuchDialog
        .Title = "Bitte wählen Sie ein Verzeichnis aus"
        .InitialFileName = "D:\a_temp\"
        .ButtonName = "Auswahl übernehmen"
        .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "Sie haben kein Verzeichnis", vbInformation
            Set SuchDialog = Nothing
            Exit Sub
        Else
            Quelle = .SelectedItems(1)
            MsgBox Quelle
        End If
    End With
    
    ZielAll = "AllTXT.txt" 'tempName
    ChDrive Left$(Quelle, 2)
    ChDir Quelle
    Shell "cmd.exe /c copy *.txt " & ZielAll, vbHide ' & ZielAll
    'Maximal 10 Sekunden warten
    Do While Dir(Quelle & ZielAll) = "" And i <= 10
        DoEvents
        Application.Wait Now + TimeSerial(0, 0, 1)
        i = i + 1
    Loop
    If Dir(Quelle & ZielAll) = "" Then Exit Sub
    'Text Datei einlesen, 1. Parameter Tabelle, 2. File
    LeseTxtFile Tabelle1, Quelle & ZielAll
    'Datei wieder löschen
    Kill Quelle & ZielAll
    'Call Datei_speichern_unter
End Sub

Gruss Rainer
Anzeige
AW: @Ramses
09.02.2010 16:47:06
Brend
Hallo Ramses,
nochmals vielen Dank an Dich für deine Mühe, die Du dir machst.
Zwar ist ein Verzeichnis anwählbar, nur wird leider kein Inhalt angezeigt und auch nicht geladen, gleich, ob es sich um Text-Files oder xls-Files handelt. Weißt Du Rat/willst Du noch weiter helfen?
https://www.herber.de/bbs/user/67863.xls
Grüße und Danke
Brend
Anzeige
AW: @Ramses
09.02.2010 22:57:25
Ramses
Hallo
"...Zwar ist ein Verzeichnis anwählbar, nur wird leider kein Inhalt angezeigt..:"
Das war doch auch nicht die Frage. Die Frage lautete doch:
Wie kann ich die Auswahl des Verzeichnisses variabel halten.
Und das macht der Code. Du kannst das Verzeichnis frei auswählen, das sollte ja auch in der Msgbox so auftauchen, und alle Daten werden dann dort aus deinem Verzeichnis kopiert.
Zumindest verstehe ich den Code so.
Den Rest des Codes habe ich nicht getestet, da ich davon ausgehe dass er funktioniert.
Gruss Rainer
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Verzeichnis und Pfad an ein Makro übergeben


Schritt-für-Schritt-Anleitung

Um den Dateipfad für das Einlesen von Textdateien in ein Makro zu übergeben, kannst Du den folgenden VBA-Code verwenden. Dieser öffnet einen Dialog, in dem Du ein Verzeichnis auswählen kannst:

Option Explicit

Sub Start()
    Dim Quelle As String, ZielAll As String
    Dim i As Integer
    Dim SuchDialog As FileDialog
    Set SuchDialog = Application.FileDialog(msoFileDialogFolderPicker)

    With SuchDialog
        .Title = "Bitte wählen Sie ein Verzeichnis aus"
        .InitialFileName = "D:\a_temp\"
        .ButtonName = "Auswahl übernehmen"
        .Show

        If .SelectedItems.Count = 0 Then
            MsgBox "Sie haben kein Verzeichnis", vbInformation
            Set SuchDialog = Nothing
            Exit Sub
        Else
            Quelle = .SelectedItems(1)
            MsgBox Quelle
        End If
    End With

    ZielAll = "AllTXT.txt" ' Name der Zieldatei
    ChDrive Left$(Quelle, 2)
    ChDir Quelle
    Shell "cmd.exe /c copy *.txt " & ZielAll, vbHide

    ' Weitere Codes zur Verarbeitung hier einfügen...

End Sub

In diesem Code wird ein Dialog geöffnet, in dem Du ein Verzeichnis auswählen kannst. Der Pfad wird dann in der Variable Quelle gespeichert.


Häufige Fehler und Lösungen

  1. Fehler: Kein Verzeichnis gewählt

    • Lösung: Stelle sicher, dass der Dialog geöffnet wird und Du ein Verzeichnis auswählst, bevor Du auf "Auswahl übernehmen" klickst.
  2. Fehler: Keine Dateien im Verzeichnis angezeigt

    • Lösung: Überprüfe, ob sich tatsächlich Textdateien im gewählten Verzeichnis befinden. Der Code kopiert nur Dateien mit der Endung .txt.
  3. Fehler: Der Code läuft nicht

    • Lösung: Stelle sicher, dass Du den richtigen VBA-Editor in Excel verwendest und dass der Code in einem Modul eingefügt wird.

Alternative Methoden

Falls Du eine andere Möglichkeit zur Auswahl des Verzeichnisses benötigst, kannst Du auch den Application.GetOpenFilename-Dialog verwenden, um spezifische Dateien auszuwählen, anstatt ein ganzes Verzeichnis:

Dim Datei As Variant
Datei = Application.GetOpenFilename("Textdateien (*.txt), *.txt", , "Wähle eine Textdatei")
If Datei <> False Then
    ' Verarbeite die Datei
End If

Dies ermöglicht die Auswahl von einzelnen Dateien, anstatt eines Verzeichnisses.


Praktische Beispiele

  • Beispiel 1: Um alle .txt-Dateien aus einem bestimmten Verzeichnis zu lesen und in eine Excel-Tabelle zu importieren, kannst Du den oben genannten Code erweitern, um die Datei mit einem Importverfahren zu lesen.

  • Beispiel 2: Wenn Du mehrere Dateiformate verarbeiten möchtest, passe die Shell-Anweisung an, um auch .xls-Dateien zu berücksichtigen.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft Dir, alle Variablen zu deklarieren und mögliche Fehler durch Tippfehler zu vermeiden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung mit On Error Resume Next, um zu verhindern, dass das Makro bei einem Fehler stoppt.

  • Code modularisieren: Teile Deinen Code in mehrere Subroutinen auf, um die Lesbarkeit und Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um andere Dateiformate zu unterstützen?
Du kannst die Shell-Anweisung so ändern, dass sie auch andere Dateiformate wie .xls oder .csv verarbeitet. Achte darauf, dass der Code dann entsprechend angepasst wird, um die Dateien korrekt zu lesen.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der Code sollte in Excel XP und höheren Versionen funktionieren. Achte darauf, dass der FileDialog-Typ msoFileDialogFolderPicker unterstützt wird.

3. Was ist, wenn ich den Pfad nicht manuell auswählen möchte?
Wenn Du den Pfad automatisch festlegen möchtest, kannst Du ihn direkt in den Code einfügen, anstatt den Dialog zu verwenden.

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