Access Daten Import mit VBA

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Access Daten Import mit VBA von: Dirk
Geschrieben am: 11.02.2005 10:30:36

Hallo,
ich habe folgendes Problem:
Daten, die in Access erstellt werden, müssen in Excel ausgewertet werden. Der Name der Access-Datei ändert sich, die Struktur aber nicht.

Ich habe ein Makro (s.u.) erstellt (aufgezeichnet und anschließend editiert), was den Dateinamen mit GetOpenFile in eine Variable liest und diese Variable dann bei dem Importvorgang überall einsetzt.

Dummerweise kommt immer die Fehlermeldung, dass die Datei (die in der Variable steht / Kontrolle durch MsgBox) nicht gefunden wurde. Es wird sogar eine Alternativdatei angeboten, die den gleichen Namen trägt.

Ich komm nicht weiter ... bitte helft mir!
----------------------
Das Makro: (Dateivariable ist 'datei')
______________________

Sub Import()
datei = Application.GetOpenFilename
MsgBox datei
    With ActiveSheet.QueryTables.Add(Connection:=Array( _
        "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=datei;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLED" _
        , _
        "B:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:G" _
        , _
        "lobal Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=F" _
        , _
        "alse;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
        ), Destination:=Range("A1"))
        .CommandType = xlCmdTable
        .CommandText = Array("Drops")
        .Name = "Daten"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = False    
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceDataFile = datei
        .Refresh BackgroundQuery:=False
    End With
End Sub

Bild


Betrifft: AW: Access Daten Import mit VBA von: Heinz A. Wankmüller
Geschrieben am: 11.02.2005 11:04:01

Hallo Dirk,

statt
...Data Source=datei;Mode...
muss es heißen:

...Data Source=" & datei & ";Mode...

Gruß
Heinz


Bild


Betrifft: AW: Access Daten Import mit VBA von: Dirk
Geschrieben am: 11.02.2005 11:15:40

Hallo und Danke!

Leider kommt jetzt die Fehlermeldung "Typen unverträglich". Ich habe die Variable Datei als Variant und auch als String definiert .... hat aber leider nichts gebracht :-(


Bild


Betrifft: AW: Access Daten Import mit VBA von: Heinz A. Wankmüller
Geschrieben am: 11.02.2005 11:25:40

Hallo Dirk,

ich habe meine Abfragen mit ODBC gemacht. Da funktioniert das so:

Sub Abfrage()
    Dim wsE As Worksheet, wsA As Worksheet, UZ$, datei$, datei2$
        Application.ScreenUpdating = False
        datei = "C:\Programme\Microsoft Office\Office\Samples\Nordwind.mdb"
        datei2 = datei & ".mdb"
    With wsA.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=Microsoft Access-Datenbank;DBQ=" & datei2 & ";DefaultDir=C:\Programme\Microsoft " _
        ), Array( _
        "Office\Office\Samples;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
        )), Destination:=wsA.Range("A1"))
        .CommandText = Array( _
        "SELECT Lieferanten.`Lieferanten-Nr`, Lieferanten.Firma, Lieferanten.Kontaktperson, Lieferanten.Position, Lieferanten.Straße, Lieferanten.Ort, Lieferanten.Region, Lieferanten.PLZ, Lieferanten.Land, Lie" _
        , _
        "feranten.Telefon" & Chr(13) & "" & Chr(10) & "FROM `" & datei & "`.Lieferanten Lieferanten" & Chr(13) & "" & Chr(10) & "WHERE (Lieferanten.`Lieferanten-Nr`=" & UZ & ")" _
        )
        .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
        Application.ScreenUpdating = True
End Sub


Worin der Unterschied in deinem Fall besteht, kann ich leider nicht sagen.

Gruß
Heinz


Bild


Betrifft: AW: Access Daten Import mit VBA von: Dirk
Geschrieben am: 11.02.2005 12:22:04

Hallo Heinz,

vielen Dank. Ich habe durch Zufall den Rechner gewechselt (größerer Bildschirm war sinnvoller) und da lief die erste Variante direkt (ohne ODBC). Auf einem weiteren Rechner auch ... nur halt auf meinem Stammrechner nicht! Und das wohlgemerkt bei gleicher Excel Version. Verstehe wer will!

Habe dieses Forum übrigens das erste mal benutzt und bin sehr angenehm überrascht wie schnell und klasse das funktioniert!

Danke,
Dirk


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Access Daten Import mit VBA"