AW: Pfad zu allen Access-Verbindungen ändern
Oberschlumpf
Hi Hans
Mit Deiner Datei konnte ich leider nicht viel anfangen, weil ja eben die dazugehörige MDB-Datei fehlt.
Ich hab jetzt mal Folgendes durchgeführt:
Zuerst habe ich...
1. Den Makrorecorder gestartet
2. Die Befehle "Daten/externe Daten importieren/neue Abfrage erstellen/Microsoft Access...usw" durchgeführt,
mit dem Recorder aufgezeichnet, und heraus kam dieser VBA-Code:
Sub Makro1()
' Makro1 Makro
' Makro am 30.09.2004 von Thorsten aufgezeichnet
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Microsoft Access-Datenbank;DBQ=C:\Test\CD-Sammlung.mdb;DefaultDir=C:\Test;DriverId=25;FIL=MS Access;MaxBufferSize=2048;Page" _
), Array("Timeout=5;")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT Haupttabelle.`CD-Nr`, Haupttabelle.ProgName, Haupttabelle.Beschreibung" & Chr(13) & "" & Chr(10) & "FROM `C:\Test\CD-Sammlung`.Haupttabelle Haupttabelle" _
)
.Name = "Abfrage von Microsoft Access-Datenbank"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Wie Du erkennen kannst, ist die Access-DB im Verzeichnis "C:\Test" gespeichert.
In diesem Verzeichnis befindet sich auch die XL-Datei.
Ich habe den Code dann wie folgt umgeändert:
Sub Makro1()
' Makro1 Makro
' Makro am 30.09.2004 von Thorsten aufgezeichnet
ChDrive (Left(ThisWorkbook.Path, 2))
ChDir (ThisWorkbook.Path)
With ActiveSheet.QueryTables.Add(Connection:=Array(Array("ODBC;DSN=Microsoft Access-Datenbank;DBQ=" & CurDir & "\CD-Sammlung.mdb;DefaultDir=" & CurDir & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;Page"), Array("Timeout=5;")), Destination:=Range("A1"))
.CommandText = Array("SELECT Haupttabelle.`CD-Nr`, Haupttabelle.ProgName, Haupttabelle.Beschreibung" & Chr(13) & "" & Chr(10) & "FROM `" & CurDir & "\CD-Sammlung`.Haupttabelle Haupttabelle")
.Name = "Abfrage von Microsoft Access-Datenbank"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Mit ChDrive & ChDir habe ich zuerst DAS Verzeichnis eingestellt, in dem die XL- und die
Access-Datei gespeichert sind.
Dann habe ich in allen Code-Zeilen die Zeichenfolge "C:\Test" gegen CurDir ausgetauscht.
(die Funktion CurDir gibt das aktuell eingestellte Verzeichnis zurück - in diesem
Bsp "C:\Test")
Jetzt wird in dem Code, wo vorher das Verzeichnis "C:\Test" vorgegeben war, IMMER in DEM
Verzeichnis nach der Access-DB 'gesucht', aus dem heraus auch die XL-Datei gestartet
wurde.
Zum Beweis habe ich...
1. die Xl- und Access-Datei auf einer anderen Festplatte und in einem anders lautenden
Verzeichnis gespeichert
2. Das Verzeichnis "C:\Test" und die Dateien darin gelöscht
3. die XL-Datei im neuen Verzeichnis gestartet
Und das Ergebnis?
Egal, wo ich die XL-Datei starte....
...immer wird die, im gleichen Verzeichnis gespeicherte Access-DB, 'gefunden' und ausgewertet
Also....das Problem scheint gelöst zu sein :-)
Du kannst ja jetzt versuchen, nach dieser 'Anleitung' genau so vorzugehen.
Vielleicht mit einer Kopie Deiner Excel-Datei und eine Änderung nach der anderen.
Ich würd mich freuen, wenn Du auch bei Erfolg eine Rückmeldung machst.
Bis Dann :-)
Thorsten
(sorry, wenn die Ansicht jetzt ein wenig in die Breite geht)