Werte aus anderer Datei einlesen mit Excel VBA
Schritt-für-Schritt-Anleitung
Um Werte aus einer anderen Excel-Datei einzulesen, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
-
Öffne die Datei "BAB.xls" und gehe zum VBA-Editor (Alt + F11).
-
Füge ein neues Modul hinzu: Rechtsklick im Projektfenster auf "VBAProject (BAB.xls)" > Einfügen > Modul.
-
Kopiere den folgenden Code in das Modul:
Option Explicit
Sub Daten()
Dim wks As Worksheet
Dim wksDaten As Worksheet
Dim wkbDaten As Workbook
Dim rng As Range
On Error GoTo FEHLER
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Workbooks.Open "D:\Eigene Dateien\Kostenstellen.xls"
Set wkbDaten = Workbooks("Kostenstellen.xls")
Set wksDaten = wkbDaten.Sheets("Kostenstellen")
For Each wks In ThisWorkbook.Sheets
If wks.[B1] <> "" Then
Set rng = wksDaten.Columns("A").Find(What:=wks.[B1], LookIn:=xlValues, LookAt:=xlWhole)
If Not rng Is Nothing Then
wks.[C1] = rng.Offset(0, 1)
End If
End If
Next
wkbDaten.Close
FEHLER:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
-
Schließe den VBA-Editor und führe das Makro aus (Alt + F8, wähle "Daten" und klicke auf "Ausführen").
Dieses Makro öffnet die Datei "Kostenstellen.xls", sucht in jedem Tabellenblatt der Datei "BAB.xls" nach dem Wert in B1 und übernimmt den entsprechenden Namen in C1.
Häufige Fehler und Lösungen
-
Fehler beim Öffnen der Datei: Überprüfe den Pfad zur Datei "Kostenstellen.xls". Stelle sicher, dass die Datei existiert und der Pfad korrekt ist.
-
Kompilierungsfehler: Achte darauf, dass der Code in einem allgemeinen Modul und nicht in einem Tabellenblatt-Modul eingefügt wird.
-
"Zelle nicht gefunden": Wenn die Zelle B1 leer ist, wird der Fehler ausgelöst. Stelle sicher, dass in B1 ein Wert steht.
Alternative Methoden
Falls Du keine VBA-Makros verwenden möchtest, kannst Du auch die Funktion SVERWEIS()
nutzen, um Daten aus einer anderen Excel-Datei zu suchen und zu übernehmen:
=SVERWEIS(B1;[Kostenstellen.xls]Kostenstellen!$A$1:$B$100;2;FALSCH)
Diese Formel sucht den Wert in B1 in der Datei "Kostenstellen.xls" und gibt den entsprechenden Namen zurück. Beachte, dass die Datei geöffnet sein muss, um die Daten abzurufen.
Praktische Beispiele
-
Werte aus einer anderen Excel-Datei importieren: Nutze das oben genannte Makro, um Werte aus "Kostenstellen.xls" in "BAB.xls" zu importieren.
-
SVERWEIS für einfache Datenübernahme: Verwende =SVERWEIS()
in der Zelle C1 der Datei "BAB.xls", um direkt den Namen basierend auf dem Wert in B1 zu finden.
Tipps für Profis
-
Automatisierung: Du kannst das Makro so anpassen, dass es automatisch beim Öffnen der Datei "BAB.xls" ausgeführt wird, indem Du es im Workbook_Open
-Ereignis platzierst.
-
Daten aus mehreren Dateien: Wenn Du Daten aus mehreren Excel-Dateien einlesen möchtest, kannst Du eine Schleife verwenden, die durch ein Verzeichnis iteriert.
-
Fehlerbehandlung: Füge mehr Fehlerbehandlungsroutinen hinzu, um spezifische Fehler besser zu handhaben.
FAQ: Häufige Fragen
1. Wie kann ich Daten aus einer geschlossenen Excel-Datei importieren?
Du kannst die ADODB
-Bibliothek verwenden, um Daten aus einer geschlossenen Datei zu lesen, ohne sie zu öffnen.
2. Was ist der Unterschied zwischen SVERWEIS und einer VBA-Lösung?
SVERWEIS ist einfach anzuwenden und erfordert keine Programmierkenntnisse, während VBA mehr Flexibilität und Automatisierung bietet.
3. Kann ich das Makro für andere Excel-Versionen verwenden?
Ja, das Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren.