Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
724to728
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Problem mit Makro zum Einlesen von Access-Daten?

Problem mit Makro zum Einlesen von Access-Daten?
03.02.2006 19:44:10
Access-Daten?
Hallo an alle,
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.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Makro zum Einlesen von Access-Date
04.02.2006 09:47:40
Access-Date
Hallo Oliver,
die Ursache liegt wahrscheinlich etwas weiter vorher im Code nämlich in den Zeilen

Sub Excel2000()
.Name = "Abfrage von Microsoft Access-Datenbank"
Sub Excel2003()
.Name = "Abfrage von Microsoft Access-Datenbank_5"

Hier muss Du per IF-Bedingung die jeweilige EXCEL-Version abfragen und den entsprechenden Namen zuweisen, damit die korrekte Access-Version angesprochen wird.
Die EXCEL-Version kannst Du mit
Application.Version
abfragen. Welche Werte bei EXCEL2000 und EXCEL2003 ausgegeben werden weiß ich nicht, habe nur EXCEL97, kannste aber einfach testen mit.

Sub EXCELVersion()
MsgBox Application.Version
End Sub 

Gruß
Franz
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige