Daten aus einer anderen Arbeitsmappe auslesen und importieren
Schritt-für-Schritt-Anleitung
Um Daten aus einer anderen Arbeitsmappe in Excel auszulesen und zu importieren, kannst du folgendes VBA-Makro verwenden. Stelle sicher, dass du Excel 2016 oder eine neuere Version nutzt:
- Öffne deine Excel-Datei und drücke
ALT + F11
, um den VBA-Editor zu starten.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Füge den folgenden Code in das Modul ein:
Sub DatenSuchen()
Dim Suchbegriff As String
Dim wbAktiv As Workbook, wksAktiv As Worksheet
Dim wksZiel As Worksheet
Dim wbQuelle As Workbook, wksQuelle As Worksheet, strWb As String, strWks As String
Dim ZelleGefunden As Range, Bereichdaten As Range
Dim varVerzeichnisQuelle
Dim ZelleSuchbegriff As Range
On Error GoTo Fehler
Set wbAktiv = ActiveWorkbook
Set wksAktiv = ActiveSheet
Set wksZiel = wbAktiv.Worksheets("ZielTabName")
Set ZelleSuchbegriff = Selection
Suchbegriff = ZelleSuchbegriff.Value
' Ermitteln des Dateinamens und des Tabellenblatts
If InStr(1, Suchbegriff, "d") > 0 Then
strWb = "Matrix_Design" & Mid(Suchbegriff, InStr(1, Suchbegriff, "d") + 1, 1)
strWks = "design" & Mid(Suchbegriff, InStr(1, Suchbegriff, "d") + 1, 1)
Else
MsgBox "Buchstabe ""d"" nicht im Suchbegriff """ & Suchbegriff & """ enthalten."
GoTo Ende
End If
' Wählen des Ordners mit den Quelldateien
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "Bitte Ordner mit den 5 Datendateien wählen und OK"
If .Show = False Then
GoTo Ende
End If
varVerzeichnisQuelle = .SelectedItems(1)
End With
Application.ScreenUpdating = False
' Prüfen, ob die Datei im gewählten Verzeichnis existiert
With Application
strWb = Dir(varVerzeichnisQuelle & .PathSeparator & strWb & ".xl*")
If strWb <> "" Then
Set wbQuelle = .Workbooks.Open(Filename:=varVerzeichnisQuelle & .PathSeparator & strWb, ReadOnly:=True)
Set wksQuelle = wbQuelle.Worksheets(strWks)
Else
MsgBox "Quelldatei """ & strWb & ".xl*"" im Verzeichnis """ & varVerzeichnisQuelle & """ nicht gefunden!"
GoTo Ende
End If
End With
' Suchbegriff suchen
Set ZelleGefunden = wksQuelle.Cells.Find(What:=Suchbegriff, LookIn:=xlValues, lookat:=xlWhole)
If ZelleGefunden Is Nothing Then
MsgBox "Suchbegriff """ & Suchbegriff & """ in Datei """ & wbQuelle.Name & """, Blatt """ & wksQuelle.Name & """ nicht gefunden!"
GoTo Ende
Else
With wksQuelle
Set Bereichdaten = .Range(ZelleGefunden.Offset(1, -1), ZelleGefunden.End(xlDown))
End With
With wksZiel
.Visible = xlSheetVisible
.Range(.Cells(2, 1), .Cells(2, 2).End(xlDown)).ClearContents
Bereichdaten.Copy Destination:=.Cells(2, 1)
End With
wbQuelle.Close savechanges:=False
End If
Ende:
Fehler:
Application.ScreenUpdating = True
With Err
If .Number <> 0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
Set wbAktiv = Nothing: Set wksAktiv = Nothing
If Not wbQuelle Is Nothing Then wbQuelle.Close savechanges:=False
Set wbQuelle = Nothing
Set wksZiel = Nothing
Set wksQuelle = Nothing
Set ZelleGefunden = Nothing: Set Bereichdaten = Nothing
End Sub
- Anpassung der Zielblatt- und Ordnernamen: Stelle sicher, dass das Zielblatt in deiner Arbeitsmappe den Namen "ZielTabName" hat und passe den Pfad für die Quelldateien an.
Häufige Fehler und Lösungen
-
Fehlende Dateien: Wenn das Makro meldet, dass die Quelldatei nicht gefunden wurde, überprüfe, ob die Dateien "Matrix_Design1" bis "Matrix_Design5" im gewählten Ordner vorhanden sind.
-
Buchstabe "d" fehlt: Achte darauf, dass der Suchbegriff den Buchstaben "d" enthält, da das Makro sonst nicht funktioniert.
-
Zielblatt nicht sichtbar: Wenn das Zielblatt nicht sichtbar ist, stelle sicher, dass es im Makro als sichtbar eingestellt ist.
Alternative Methoden
Neben der VBA-Methode kannst du auch die SVERWEIS
-Funktion in Excel verwenden, um Daten aus einer anderen Tabelle zu suchen und zu importieren. Diese Methode ist einfacher, erfordert jedoch, dass die Quelldaten in der gleichen Arbeitsmappe vorhanden sind.
Praktische Beispiele
Angenommen, du hast das Kürzel "l1a3d2p2c2" in deinem Arbeitsblatt. Wenn das Kürzel sich im Blatt "design2" befindet und die gesuchte Zahl "2" ist, wird das Makro automatisch die Daten aus dem entsprechenden Bereich zwischen A3 und der letzten gefüllten Zelle in Spalte B kopieren.
Tipps für Profis
- Fehlerbehandlung: Füge zusätzliche Fehlerbehandlungsroutinen in dein Makro ein, um unerwartete Probleme besser zu diagnostizieren.
- Modularität: Teile dein Makro in kleinere, wiederverwendbare Funktionen auf, um den Code lesbarer und wartungsfreundlicher zu gestalten.
- Dokumentation: Kommentiere deinen Code deutlich, um die Verständlichkeit zu erhöhen, besonders wenn andere Benutzer deinen Code verwenden.
FAQ: Häufige Fragen
1. Frage
Kann ich das Makro auch für andere Dateiformate verwenden?
Ja, das Makro kann angepasst werden, um auch mit anderen Formaten wie CSV zu arbeiten, solange die grundlegende Struktur beibehalten wird.
2. Frage
Was passiert, wenn ich die Datei schließe, während das Makro läuft?
Das Makro wird anhalten und eine Fehlermeldung anzeigen. Es ist wichtig, die Datei nicht zu schließen, bis der Vorgang abgeschlossen ist.