ich steh mal wieder auf dem Schlauch. Ich muss Daten aus einer Access-Datenbank in Excel einlesen. Nun habe ich mir dazu ein Makro in Excel 2003 aufgezeichnet. Das aufgezeichnete Makro erstellt eine neue Abfrage, über die ich die Daten in Excel hinein bekomme. Nun soll das Makro aber auch auf Excel 2000 laufen. Mit dem in Excel 2003 aufgezeichneten Makro geht das aber leider nicht, denn ich erhalte einen Laufzeitfehler. Da habe ich mir das gleiche Makro noch mal in Excel 2000 aufgezeichnet. Dieses läuft aber leider nicht unter Excel 2003. Ich erhalte beim Ausführen des Makros, welches unter Excel 2000 aufgezeichnet, genau den gleichen Fehler wie oben beschrieben. Es erscheint ein Laufzeitfehler 1004 mit den Fehlertext Allgemeiner ODBC Fehler. Nachfolgend mal beide Makros:
Sub Excel2000()
pfad = ThisWorkbook.Path
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Microsoft Access-Datenbank;DBQ=" & pfad & "\AvalonDaten.mdb;DefaultDir=" & pfad & ";DriverId=25;FIL=MS Access" _
), Array(";MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT Anlagen.Anlage, Anlagen.Objektbezeichnung, Anlagen.Strasse, Anlagen.Hausnummer, Anlagen.Plz, Anlagen.SchlüsselNr" & Chr(13) & "" & Chr(10) & "FROM `D:\Störung\Programm\AvalonDaten`.Anlagen Anlagen" & Chr(13) & "" & Chr(10) & "ORDER BY Anlagen.Anlage" _
)
.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
Sub Excel2003()
pfad = ThisWorkbook.Path
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Microsoft Access-Datenbank;DBQ=" & pfad & "\AvalonDaten.mdb;DefaultDir=" & pfad & ";DriverId=25;F" _
), Array("IL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
Range("A1"))
.CommandText = Array( _
"SELECT Anlagen.Anlage, Anlagen.Objektbezeichnung, Anlagen.Strasse, Anlagen.Hausnummer, Anlagen.SchlüsselNr" & Chr(13) & "" & Chr(10) & "FROM `C:\Daten\Störung\Programm\AvalonDaten`.Anlagen Anlagen" & Chr(13) & "" & Chr(10) & "ORDER BY Anlagen.Anlage" _
)
.Name = "Abfrage von Microsoft Access-Datenbank_5"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Bei beiden Makros kommt der beschriebene Fehler, also wenn ich das Makro Excel2000 unter Excel 2003 ausführe und wenn ich Excel2003 unter Excel 2000 ausführe, und es wird bei beiden Makro die Zeile
.Refresh BackgroundQuery:=False
markiert. Wobei für mich diese beiden Zeilen 100% identisch aussehen.
Kann mir jemand sagen, warum das so ist, dass die Zeile markiert wird, die bei beiden Makros gleich ist.
Ich hoffe, jemand kann mir das erklären und hat eventuell auch eine Lösung parat, wie ich das abstellen kann.
Danke Euch für die Hilfe,
Oliver S.