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

Pfad einer Excel Verbindung auslesen

Forumthread: Pfad einer Excel Verbindung auslesen

Pfad einer Excel Verbindung auslesen
14.08.2014 10:33:41
DerBurch
Hallo Allerseits,
ich habe eine Excel Datei die eine externe Datenverbindung hat.
Mit ThisWorkbook.Connections(1) kann ich den Dateinamen der Verbindung auslesen aber wie komme ich an den Pfad der Datei die in Connections(1) steht?
Besten Dank
Damian

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad einer Excel Verbindung auslesen
14.08.2014 15:54:35
fcs
Hallo Damian,
diese Informationne sind etwas mühsehlig zu ermitteln, da das Ganze von der Art der Datenverbindung abhängig ist.
Nachfolgend ein Beispiel für 2 Verbindungstypen, das man ggf. erweitern kann.
Dazu muss man im VBA-Editor das Lokal-Fenster einblenden und das Makro im Schrittmodus abarbeiten, so dass man die Inhalte der Variablen objCon auslesen kann.
Gruß
Franz
Sub subGetConnectionInfo()
Dim objConnection
For Each objConnection In ActiveWorkbook.Connections
MsgBox fncGetConnectionInfo(objCon:=objConnection, strParameter:="SourceDataFile")
Next
End Sub
Function fncGetConnectionInfo(objCon As Variant, Optional strParameter) As Variant
'Informationen zu Datenquelle anzeigen ermitteln
Dim strMsg As String, varErgebnis
On Error Resume Next
With objCon
strMsg = strMsg & vbLf & "Name: " & .Name
strMsg = strMsg & vbLf & "Description: " & .Description
strMsg = strMsg & vbLf & "Type: " & .Type
Select Case .Type
Case 2 '2 = xlConnectionTypeODBC
With .ODBCConnection
Select Case strParameter
Case "Connection": varErgebnis = .Connection
Case "SourceDataFile"
If .SourceDataFile = "" Then
varErgebnis = .Connection
varErgebnis = Mid(varErgebnis, InStr(1, varErgebnis, "DBQ=") + 4)
varErgebnis = Left(varErgebnis, InStr(1, varErgebnis, ";") - 1)
Else
varErgebnis = .SourceDataFile
End If
End Select
strMsg = strMsg & vbLf & "Connection: " & .Connection
strMsg = strMsg & vbLf & "CommandText: " & .CommandText
End With
Case 1 '1 = xlConnectionTypeOLEDB
With .OLEDBConnection
Select Case strParameter
Case "Connection": varErgebnis = .Connection
Case "SourceDataFile": varErgebnis = .SourceDataFile
End Select
strMsg = strMsg & vbLf & "Connection: " & .Connection
strMsg = strMsg & vbLf & "Commandtext: " & .CommandText
strMsg = strMsg & vbLf & "SourceDataFile: " & .SourceDataFile
strMsg = strMsg & vbLf & "SourceConnectionFile: " & .SourceConnectionFile
End With
Case Else
End Select
End With
MsgBox strMsg
fncGetConnectionInfo = varErgebnis
End Function

Anzeige
AW: Pfad einer Excel Verbindung auslesen
15.08.2014 14:08:04
DerBurch
Hallo Franz,
1000 dank für deine Arbeit!!!!
Ich hätte nie gedacht, dass das so eine Arbeit ist den Pfad auszulesen.
Klappt wunderbar.
Einen lieben Gruß und schönes Wochenende
Damian
;
Anzeige
Anzeige

Infobox / Tutorial

Pfad einer Excel-Datenverbindung auslesen


Schritt-für-Schritt-Anleitung

Um den Pfad einer Excel-Datenverbindung auszulesen, kannst du den folgenden VBA-Code verwenden. Dieser Code hilft dir, die Verbindung zu analysieren und den Pfad der Quelldatei zu extrahieren.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub subGetConnectionInfo()
    Dim objConnection As Variant
    For Each objConnection In ThisWorkbook.Connections
        MsgBox fncGetConnectionInfo(objCon:=objConnection, strParameter:="SourceDataFile")
    Next
End Sub

Function fncGetConnectionInfo(objCon As Variant, Optional strParameter As String) As Variant
    Dim strMsg As String, varErgebnis As Variant
    On Error Resume Next
    With objCon
        strMsg = strMsg & vbLf & "Name: " & .Name
        strMsg = strMsg & vbLf & "Description: " & .Description
        strMsg = strMsg & vbLf & "Type: " & .Type
        Select Case .Type
            Case 2 ' ODBC
                With .ODBCConnection
                    Select Case strParameter
                        Case "SourceDataFile"
                            If .SourceDataFile = "" Then
                                varErgebnis = .Connection
                                varErgebnis = Mid(varErgebnis, InStr(1, varErgebnis, "DBQ=") + 4)
                                varErgebnis = Left(varErgebnis, InStr(1, varErgebnis, ";") - 1)
                            Else
                                varErgebnis = .SourceDataFile
                            End If
                    End Select
                End With
            Case 1 ' OLEDB
                With .OLEDBConnection
                    Select Case strParameter
                        Case "SourceDataFile": varErgebnis = .SourceDataFile
                    End Select
                End With
        End Select
    End With
    MsgBox strMsg
    fncGetConnectionInfo = varErgebnis
End Function
  1. Führe das Makro subGetConnectionInfo aus, um die Verbindungsinformationen zu erhalten.

Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Lösung: Stelle sicher, dass die Verbindung korrekt eingestellt ist und dass du die richtige Connection im ThisWorkbook-Objekt verwendest.

  • Problem: Keine Daten angezeigt
    Lösung: Überprüfe, ob die Datenquelle korrekt verbunden ist und ob die Verbindungstypen (ODBC oder OLEDB) unterstützt werden.


Alternative Methoden

Eine alternative Methode, um Excel-Datenverbindungen anzuzeigen, ist die Verwendung des Excel-Menüs:

  1. Gehe zu Daten in der Menüleiste.
  2. Klicke auf Abfragen und Verbindungen.
  3. Hier siehst du alle Datenverbindungen, die in der Arbeitsmappe verwendet werden.

Praktische Beispiele

Wenn du beispielsweise eine ODBC-Verbindung zu einer SQL-Datenbank hast, kannst du den obigen Code verwenden, um den Pfad zur Datenbankdatei zu extrahieren. Bei einer Excel-Datei als Datenquelle würde der Code den Pfad zu dieser Datei anzeigen.


Tipps für Profis

  • Verwende die Methode ThisWorkbook.Connections, um alle Verbindungen in deiner Arbeitsmappe anzuzeigen. Dies ist besonders nützlich, wenn du viele Datenverbindungen verwaltest.
  • Experimentiere mit den verschiedenen Connection-Typen, um ein besseres Verständnis für die Struktur deiner Datenverbindungen zu entwickeln.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich die richtige Verbindung auswähle?
Verwende die MsgBox, um die Namen der Verbindungen anzuzeigen, und prüfe, ob sie mit deinen Erwartungen übereinstimmen.

2. Was mache ich, wenn die Excel-Datei nicht öffnet?
Überprüfe die Datenverbindungseinstellungen und stelle sicher, dass die Quelle erreichbar ist. Manchmal kann die Datei auch gesperrt oder in einem anderen Programm geöffnet sein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige