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

Forumthread: Verknüpfung auf andere Datei per VBA

Verknüpfung auf andere Datei per VBA
19.02.2013 19:04:59
Christoph
Hallo zusammen,
ich möchte gern mit VBA ein Abfrage auf eine andere Datei machen ohne Sie zu öffnen. Ist das möglich?
Soll ungefähr so aussehen:
If Windows("S:\Daten\Bereiche\P\PO-L\03__Zeiterfassung\Timetable\[Änderer.xlsx]").Range("Tabelle1!B3").Value = Application.Username Then Username = 1
Aber das will nicht so...
DANKE für Eure Hilfe
Christoph

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zugriff geschlossene Datei
19.02.2013 19:14:12
Hajo_Zi
Hallo Christoph,
Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
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()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
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" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"  ' von welcher Tabelle soll er holen?
Bereich = "A1:B9"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("A1")  ' in welchen Bereich soll er kopieren? Genauer gesagt:  _
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub

Anzeige
AW: Verknüpfung auf andere Datei per VBA
19.02.2013 19:14:22
Daniel
HI
geht schon, aber nicht ganz so einfach.
die einfachste Methode ist, du schreibst die entsprechende Formel in eine freie Zelle der Datei und fragst diese ab.
Gruß Daniel

AW: Verknüpfung auf andere Datei per VBA
19.02.2013 19:19:18
Christoph
Vielen Dank Hajo, sieht etwas kompliziert aus. Ich werde das mal die nächsten 40 Tage studieren ;)
Daniel du wirst recht haben, ist wohl einfacher :)

Anzeige
AW: Verknüpfung auf andere Datei per VBA
19.02.2013 19:38:17
Daniel
wobei Hajos Makro im Prinzip nix anderes macht als das, was ich beschrieben habe.
nur halt eben schon in ein Makro gepackt.
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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

  • Fehler: "Die Quelldatei oder der Quellbereich ist ungültig!"

    • Lösung: Überprüfe den Pfad und den Dateinamen auf Tippfehler. Stelle sicher, dass die Datei tatsächlich existiert.
  • Fehler: Daten werden nicht angezeigt.

    • Lösung: Achte darauf, dass die Zelle, in die Du die Daten importieren möchtest, tatsächlich leer ist. Wenn nicht, kann es zu Konflikten kommen.

Alternative Methoden

Falls Du den Zugriff auf andere Excel-Daten ohne VBA bevorzugst, kannst Du auch die folgenden Methoden ausprobieren:

  1. Direkte Verknüpfung in Excel:

    • Öffne die Zielarbeitsmappe, gehe zu einer leeren Zelle und schreibe:
      ='[Änderer.xlsx]Tabelle1'!B3
    • Dies ermöglicht eine einfache Verknüpfung und Aktualisierung der Daten.
  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige