Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Pfad einer Excel Verbindung auslesen

Betrifft: Pfad einer Excel Verbindung auslesen von: DerBurch
Geschrieben am: 14.08.2014 10:33:41

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

  

Betrifft: AW: Pfad einer Excel Verbindung auslesen von: fcs
Geschrieben am: 14.08.2014 15:54:35

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



  

Betrifft: AW: Pfad einer Excel Verbindung auslesen von: DerBurch
Geschrieben am: 15.08.2014 14:08:04

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


 

Beiträge aus den Excel-Beispielen zum Thema "Pfad einer Excel Verbindung auslesen"