ThisWorkbook.Path in VBA mit Unterordner verwenden
Schritt-für-Schritt-Anleitung
Um den ThisWorkbook.Path
in VBA für den Import von Daten aus einem Unterordner zu nutzen, kannst du folgende Schritte befolgen:
-
VBA-Editor öffnen: Drücke ALT + F11
, um den VBA-Editor von Excel zu öffnen.
-
Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle "Einfügen" und dann "Modul".
-
Code einfügen: Kopiere den folgenden Code in das Modul:
Sub Importieren()
Dim rng As Range
Dim sFormula As String, sPath As String
Dim sWkb As String, sWks As String
sPath = ThisWorkbook.Path & "\Planung\" ' Hier den Unterordner angeben
sWkb = Range("F1").Value
If Dir(sPath & sWkb) = "" Then
Beep
MsgBox "Testdatei wurde nicht gefunden!"
End If
sWks = Range("F2").Value
sFormula = "='" & sPath & "[" & sWkb & "]" & sWks & "'!"
For Each rng In Selection.Cells
rng.Formula = sFormula & rng.Address
Next rng
With Selection
.Value = .Value
End With
End Sub
-
Parameter anpassen: Stelle sicher, dass die Zellen F1
und F2
die richtigen Dateinamen und Arbeitsblattnamen enthalten.
-
Makro ausführen: Wähle die Zellen aus, die die Formeln erhalten sollen, und führe das Makro aus.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du eine andere Methode zur Handhabung von Pfaden in Excel VBA bevorzugst, kannst du auch ActiveWorkbook.Path
verwenden. Der Code würde dann entsprechend angepasst:
sPath = ActiveWorkbook.Path & "\Planung\"
Beachte, dass ActiveWorkbook
sich auf das gerade geöffnete Workbook bezieht, während ThisWorkbook
immer das Workbook ist, in dem der Code läuft.
Praktische Beispiele
-
Import aus einem festen Unterordner:
sPath = ThisWorkbook.Path & "\Daten\"
-
Dynamische Ordnerauswahl: Lasse den Benutzer einen Ordner auswählen:
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
sPath = fd.SelectedItems(1) & "\"
End If
Tipps für Profis
- Nutze
Option Explicit
am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
- Verwende
Debug.Print
zur Fehlersuche, um Werte von Variablen während der Ausführung des Codes anzuzeigen.
-
Wenn du mit vielen Dateien arbeitest, könnte eine Schleife über alle Dateien im Unterordner nützlich sein. Nutze dafür Dir
:
Dim datei As String
datei = Dir(sPath & "*.xlsx") ' Alle Excel-Dateien im Unterordner
Do While datei <> ""
' Verarbeite die Datei
datei = Dir
Loop
FAQ: Häufige Fragen
1. Wie verwende ich ThisWorkbook.Path
in einer Formel?
Du kannst ThisWorkbook.Path
in einer Formel verwenden, indem du es in eine String-Formel einfügst, so wie im obigen Beispiel gezeigt.
2. Funktioniert dieser Ansatz in Excel 365?
Ja, der Code ist mit Excel 365 kompatibel und sollte auch in früheren Versionen funktionieren.
3. Was ist der Unterschied zwischen ThisWorkbook
und ActiveWorkbook
?
ThisWorkbook
bezieht sich auf das Workbook, in dem der VBA-Code ausgeführt wird, während ActiveWorkbook
das aktuell aktive Workbook ist, das möglicherweise ein anderes Workbook sein kann.