Verknüpfung auf andere Datei per VBA
Schritt-für-Schritt-Anleitung
Um mit Excel VBA eine Verknüpfung auf eine andere Datei herzustellen, ohne diese zu öffnen, kannst Du das folgende Beispiel anpassen. Hier ist ein einfaches Makro, das Daten aus einer geschlossenen Arbeitsmappe abruft:
Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
Dim strQuelle As String
Dim Zeilen As Long
Dim Spalten As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range(SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDaten()
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Bereich As String
Dim Ziel As Range
Pfad = "L:\Eigene Dateien\Hajo\Internet\Test\2009\"
Dateiname = "Beispiel Forum 30.xlsm"
Blatt = "Tabelle1"
Bereich = "A1:B9"
Set Ziel = ActiveSheet.Range("A1")
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub
Häufige Fehler und Lösungen
Alternative Methoden
Falls Du den Zugriff auf andere Excel-Daten ohne VBA bevorzugst, kannst Du auch die folgenden Methoden ausprobieren:
-
Direkte Verknüpfung in Excel:
-
Power Query:
- Verwende Power Query, um Daten aus einer geschlossenen Arbeitsmappe zu importieren. Dies ist besonders nützlich, wenn Du regelmäßige Updates benötigst.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie Du eine Excel-Tabelle verknüpfen kannst:
Sub VerknuepfungBeispiel()
Dim ZielRange As Range
Set ZielRange = ThisWorkbook.Sheets("Ziel").Range("A1")
Call GetDataClosedWB("S:\Daten\Bereiche\P\PO-L\03__Zeiterfassung\Timetable\", "Änderer.xlsx", "Tabelle1", "B3", ZielRange)
End Sub
In diesem Beispiel wird der Wert aus B3
der Datei Änderer.xlsx
in das Zieltabellenblatt importiert.
Tipps für Profis
- Verwende Konstanten: Definiere oft verwendete Pfade oder Dateinamen als Konstanten, um den Code übersichtlicher zu gestalten.
- Fehlerbehandlung: Implementiere umfassende Fehlerbehandlung in Deinem VBA-Code, um unerwartete Probleme besser zu handhaben.
- Dokumentation: Kommentiere Deinen Code ausführlich, damit Du später leichter nachvollziehen kannst, was Du getan hast.
FAQ: Häufige Fragen
1. Kann ich eine Excel-Tabelle verknüpfen, ohne VBA zu verwenden?
Ja, Du kannst direkt in einer Zelle eine Formel verwenden, um Daten aus einer anderen Datei zu verknüpfen.
2. Wie kann ich sicherstellen, dass die Verknüpfung immer aktuell ist?
Wenn Du eine direkte Formel verwendest, werden die Daten beim Öffnen der Datei automatisch aktualisiert, sofern die Quelldatei verfügbar ist.
3. Gibt es eine Möglichkeit, mehrere Zellen gleichzeitig zu importieren?
Ja, Du kannst den Bereich in der Funktion GetDataClosedWB
entsprechend anpassen, um mehrere Zellen gleichzeitig zu importieren.