#

 

Dieses Beispiel zeigt, wie man in einer Excel Datei die Datenverbindung zu einer anderen Datenbank in der Laufzeit ändern kann.

 

In Microsoft Excel können Daten von Access datenbanken mit dem Datenverbindungsmanager angebunden werden.

Wenn man hier eine Datenverbindung zu einer MS Access Datenbank aufbaut, dann wird automatisch im Hintergrund eine Oledb Connection erstellt.

 

 

Die Verbindungsinformationen werden dabei in sogenannte Excel Workbook queries gespeichert.

Dabei findet man im Bereich Excel Power Query (rechter Arbeitsbereich mit Queries & Connections) die Queries aufgelistet und in den Query Properties kann man die Informationen der Datenverbindung ermitteln.

Hier steht im Beispiel dass der Connection type: OLE DB Query ist

Und die Connection string: Provider=Microsoft.Mashup.OleDb.1 ist.

 

 

Zur Laufzeit kann man in einem Makro oder direkt in vba Visual Basic for Applications die Informationen ermitten und verändern, indem man die Queries durchläuft

 

Dabei muss man nur mit ThisWorkbook.Queries die entsprechende .Formula einer Query abfragen.

Sub Change_DataSource()

    '-------------------< Change Connection to new AccessDB >-------------

    Dim qry As WorkbookQuery

    If ThisWorkbook.Queries.Count > 0 Then

        Dim sFormula As String

        Set qry = ThisWorkbook.Queries(1)

        sFormula = qry.Formula

        sFormula = Replace(sFormula, "DB2", "DB1", 1, 1, vbTextCompare)

        qry.Formula = sFormula

    End If

    '-------------------</ Change Connection to new AccessDB >-------------

End Sub

 

 

In der einzelnen Query steht dann als Information wie im Beispiel der Wert für Formula in der Quick Watches Anzeige:

'let

'Quelle = Access.Database(File.Contents("C:\_Daten\Desktop\Demo\Access\2017-11-15 Access_Excel\20171115_Access_Excel.accdb"), [CreateNavigationProperties=true]),

'_xls_Cars = Quelle{[Schema="",Item="xls_Cars"]}[Data]

'in

'_xls_Cars"

'

'qry.Formula = sFormula

 

 

Datenverbindung ändern

Alles was man jetzt machen musst, ist den Pfad und die Dateiangabe zur Access Datenbank ändern und wieder in die .Formula Eigenschaft der Query zurückschreiben.

Wenn man anschliessend mit Data->Refresh All die Datenbankverbindungen aktualisiert, dann ändern sich auf zeitgleich alle werte

 

 

Tutorial

Mobile

.

0123movie.net