Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - aktuellen Ordner auslesen

VBA - aktuellen Ordner auslesen
12.11.2013 08:57:18
blablub
Hallo zusammen,
ich werte über VBA mehrere Excel-Dateien im aktuellen Ordner aus. Dafür nutze ich folgenden Code. Leider funktioniert die Abfrage "strPath = ActiveWorkbook.Path" irgendwie nicht. Ich bekomme keine Fehler. Eine feste Angabe des Ordnerpfades ist nicht möglich, da die Datei nicht nur von mir genutzt wird. Habt ihr einen Tipp? Danke!
Sub SubCombine()
Dim wkbPaste As Workbook
Dim wkbCopy As Workbook
Dim wksSheet As Worksheet
Dim rngRange As Range
Dim strCurrentFile As String
Dim strPath As String
Dim strMacroFile As String
'# Open a new workbook to store the results
Set wkbPaste = Workbooks.Add
Set rngRange = wkbPaste.ActiveSheet.Range("A1")
'# The name of this file (the one with the macro in)
strMacroFile = "Auswertung.xlsm"
'# The directory to be searched
strPath = ActiveWorkbook.Path
'# Retrieve the first file
strCurrentFile = Dir(strPath & "\*.xls")
Do While strCurrentFile  ""
'# Ignore the current directory and the encompassing directory (and the current  _
file)
If strCurrentFile  "." And strCurrentFile  ".." And strCurrentFile   _
strMacroFile Then
'# Open the file
Set wkbCopy = Workbooks.Open(strPath & strCurrentFile)
'# Select and copy the used range
wkbCopy.ActiveSheet.UsedRange.Select
Selection.Copy
'# Paste the data into the other workbook
wkbPaste.Activate
rngRange.Select
ActiveSheet.Paste
'# Move to the next available row
Set rngRange = wkbPaste.ActiveSheet.Range("A" & wkbPaste.ActiveSheet.UsedRange. _
Row + wkbPaste.ActiveSheet.UsedRange.Rows.Count)
'# Close the workbook
wkbCopy.Close False
End If
'# Get the next file
strCurrentFile = Dir
Loop
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
blablub?
12.11.2013 09:10:00
Thorsten_Z
...keine gute Voraussetzung eine Antwort zu erhalten!!!
Versuch das und gelobe Besserung:
ActiveWorkbook.Path & Application.PathSeparator
Gruß
Thorsten

AW: VBA - aktuellen Ordner auslesen
12.11.2013 09:14:17
GuentherH
Hallo Namenlos,
da Du das ActiveWorkbook gerade erst erzeugt hast, hat es noch keinen Pfad!
möglicherweise willst Du eigentlich ThisWorkbook abfragen.
Beste Grüße,
Günther

Anzeige
AW: VBA - aktuellen Ordner auslesen
12.11.2013 09:23:51
Luschi
Hallo blablub,
da Namen in einem Forum 'Schall & Rauch' sind bzw. sein sollten, solange sie nicht anzüglich/pervers oder sonst wie gegen die guten Sitten verstoßen, kriegst Du auch eine Antwort - da das Thema interessant ist. Entscheidend sind diese 2 Zeilen:
Set wkbPaste = Workbooks.Add
strPath = ActiveWorkbook.Path
Zum Zeitpunkt der Ausführung der 2. Vba-Zeile ist die Arbeitsmappe 'wkbPaste' aktiv, aber noch nicht gespeichert wurde und somit auch keinen Pfad haben kann.
Somit enthält strPath eine Leerzeichenkette.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: VBA - aktuellen Ordner auslesen
13.11.2013 08:20:41
blablub
Hallo Luschi,
vielen Dank! Diese Forensoftware ist mir ein wenig neu, deswegen sorry!
Was müsste ich denn nun ändern? Wenn ich mit "ThisWorkbook.Path" arbeite, erhalte ich einen Fehler 400.
Vielen Dank und viele Grüße!

AW: VBA - aktuellen Ordner auslesen
13.11.2013 16:24:11
Luschi
Hallo blablub,
lege noch eine Variable für die Arbeitsmappe an, in der dier Vba-Code steht.
Dim wkbThis As Workbook
Set wkbThis = ThisWorkbook
'jetzt erst die neue Mappe anlegen
Set wkbPaste = Workbooks.Add
strPath = wkbThis.Path
Gruß von Luschi
aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aktuellen Ordner in VBA auslesen


Schritt-für-Schritt-Anleitung

Um den aktuellen Ordner in Excel VBA auszulesen, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf einen der Einträge im Projektfenster und wähle Einfügen > Modul.

  3. Kopiere folgenden Code in das Modul:

    Sub OrdnerAuslesen()
       Dim wkbThis As Workbook
       Dim strPath As String
    
       ' Aktuelle Arbeitsmappe setzen
       Set wkbThis = ThisWorkbook
       ' Pfad der aktuellen Datei auslesen
       strPath = wkbThis.Path
    
       ' Überprüfen und ausgeben des Pfades
       If strPath <> "" Then
           MsgBox "Der aktuelle Pfad ist: " & strPath
       Else
           MsgBox "Die Arbeitsmappe ist noch nicht gespeichert!"
       End If
    End Sub
  4. Führe das Skript aus: Drücke F5 oder gehe zu Run > Run Sub/UserForm.

Dieser Code verwendet die ThisWorkbook.Path-Eigenschaft, um den Pfad der aktuellen Datei auszulesen. Achte darauf, dass die Datei gespeichert ist, da sonst ein leerer Pfad zurückgegeben wird.


Häufige Fehler und Lösungen

  • Fehler 400 oder leerer Pfad: Dies passiert, wenn die Arbeitsmappe noch nicht gespeichert ist. Stelle sicher, dass die Datei über Speichern einen Pfad zugewiesen bekommt.

  • ActiveWorkbook.Path gibt keinen Pfad zurück: Wenn du eine neue Datei erstellst, ist die aktive Arbeitsmappe (ActiveWorkbook) noch nicht gespeichert. Verwende stattdessen ThisWorkbook.Path.


Alternative Methoden

Falls du den Pfad der geöffneten Datei auslesen möchtest, kannst du Application.ActiveWorkbook.Path verwenden. Hier ein Beispiel:

Sub AktuellerPfad()
    Dim strPath As String
    strPath = Application.ActiveWorkbook.Path
    MsgBox "Aktueller Pfad: " & strPath
End Sub

Diese Methode ist nützlich, wenn du mit mehreren geöffneten Arbeitsmappen arbeitest und den Pfad einer bestimmten Datei benötigst.


Praktische Beispiele

  1. VBA Ordner auslesen und Dateien auflisten:

    Sub DateienImOrdner()
       Dim strPath As String
       Dim strFile As String
    
       strPath = ThisWorkbook.Path & "\"
       strFile = Dir(strPath & "*.xls*")
    
       Do While strFile <> ""
           Debug.Print strFile ' Gibt den Dateinamen in das Direktfenster aus
           strFile = Dir
       Loop
    End Sub
  2. Dateipfad in eine Zelle eintragen:

    Sub PfadInZelle()
       Dim strPath As String
       strPath = ThisWorkbook.Path
       Range("A1").Value = strPath
    End Sub

Tipps für Profis

  • Verwende Application.GetOpenFilename: Wenn du den Benutzer einen Ordner auswählen lassen möchtest, kannst du diese Funktion nutzen, um den Pfad zu erhalten.

  • Verwalte mehrere Dateien: Mit Dir kannst du alle Dateien in einem Verzeichnis durchlaufen und bestimmte Aktionen auf diesen Dateien ausführen.

  • Automatisiere das Speichern von Arbeitsmappen: Verwende Workbook.SaveAs, um den Pfad zu speichern, falls der Benutzer es vergisst.


FAQ: Häufige Fragen

1. Frage
Wie kann ich den Pfad der aktuellen Datei in einer Variablen speichern?
Antwort: Du kannst den Pfad mit strPath = ThisWorkbook.Path speichern.

2. Frage
Was tun, wenn ActiveWorkbook.Path nicht funktioniert?
Antwort: Stelle sicher, dass die Arbeitsmappe gespeichert ist. Verwende ThisWorkbook.Path, um den Pfad der Datei mit dem Makro zu erhalten.

3. Frage
Wie kann ich den aktuellen Pfad in eine Zelle schreiben?
Antwort: Nutze Range("A1").Value = ThisWorkbook.Path, um den Pfad in die Zelle A1 einzufügen.

4. Frage
Wie kann ich alle Excel-Dateien in einem Ordner auflisten?
Antwort: Du kannst eine Schleife mit Dir verwenden, um alle Dateien im aktuellen Verzeichnis aufzulisten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige