Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ausführen/Import von Access Abfragen mittels Makro

Ausführen/Import von Access Abfragen mittels Makro
03.11.2004 10:45:41
Access
Hallo,
ich habe in Access mehrere Abfragen, die ich mittels Makro (oder gibt es auch andere Möglichkeiten?) von Excel aus starten und dann auch in Excel importieren will.
Kann mir jemand, den dafür nötigen Code schicken?
mfg
Christian
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausführen/Import von Access Abfragen mittels Makro
04.11.2004 08:13:55
Access
Hallo,
Danke.
Habe folgenden Code verwendet:

Sub ADOImportFromAccessTable(DBFullName As String, _
TableName As String, TargetRange As Range)
' Example: ADOImportFromAccessTable "C:\FolderName\DataBaseName.mdb", _
"TableName", Range("C1")
Dim cn As ADODB.Connection, rs As ADODB.Recordset, intColIndex As Integer
Set TargetRange = TargetRange.Cells(1, 1)
' open the database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
DBFullName & ";"
Set rs = New ADODB.Recordset
With rs
' open the recordset
.Open TableName, cn, adOpenStatic, adLockOptimistic, adCmdTable
' all records
'.Open "SELECT * FROM " & TableName & _
" WHERE [FieldName] = 'MyCriteria'", cn, , , adCmdText
' filter records
RS2WS rs, TargetRange ' write data from the recordset to the worksheet
'        ' optional approach for Excel 2000 or later (RS2WS is not necessary)
'        For intColIndex = 0 To rs.Fields.Count - 1 ' the field names
'            TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name
'        Next
'        TargetRange.Offset(1, 0).CopyFromRecordset rs ' the recordset data
End With
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub

Wenn ich allerdings diesen Code anpasse, bekomme ich schon in der ersten Zeile einen "Fehler beim Kompilieren". Kannst du mir evtl. sagen wie der Code angepasst werden muss. Meine Datenbank: C:\Weekly_Report.mdb
Excel Tabelle in die importiert werden soll ist leer: Name: C:\Auswertung.xls
Brauche ich irgendwelche addins für Excel?
DANKE
Christian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Access Abfragen aus Excel ausführen und importieren


Schritt-für-Schritt-Anleitung

Um eine Access-Abfrage über ein Excel-Makro auszuführen und die Ergebnisse zu importieren, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (deine Datei)".
    • Wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:

    Sub ADOImportFromAccessTable(DBFullName As String, _
    TableName As String, TargetRange As Range)
       Dim cn As ADODB.Connection, rs As ADODB.Recordset
       Set TargetRange = TargetRange.Cells(1, 1)
       ' Datenbankverbindung öffnen
       Set cn = New ADODB.Connection
       cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBFullName & ";"
       Set rs = New ADODB.Recordset
       rs.Open TableName, cn, adOpenStatic, adLockOptimistic, adCmdTable
       TargetRange.CopyFromRecordset rs ' Daten importieren
       rs.Close
       cn.Close
    End Sub
  4. Ändere die Parameter:

    • DBFullName auf den Pfad deiner Access-Datenbank (z.B. C:\Weekly_Report.mdb).
    • TableName auf den Namen deiner Abfrage oder Tabelle.
    • TargetRange auf den Zellbereich in Excel, wo die Daten erscheinen sollen (z.B. Range("C1")).
  5. Führe das Makro aus:

    • Gehe zurück zu Excel und drücke ALT + F8, wähle das Makro und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Stelle sicher, dass alle verwendeten Variablen korrekt deklariert sind und dass Du die richtige Datenbankverbindung verwendest.

  • Verbindung zur Datenbank schlägt fehl: Überprüfe den Pfad zur Datenbank und stelle sicher, dass die Datei existiert. Prüfe auch, ob die Access-Datenbank nicht von einem anderen Programm geöffnet ist.

  • Daten werden nicht importiert: Vergewissere Dich, dass der TargetRange korrekt angegeben ist und dass die Excel-Tabelle die richtige Struktur hat, um die importierten Daten zu empfangen.


Alternative Methoden

Neben der Verwendung von VBA kannst Du auch Access Makros direkt innerhalb von Access erstellen, um die Abfragen auszuführen und die Ergebnisse in eine Excel-Datei zu exportieren. Hierbei kannst Du die Exportfunktion in Access nutzen, um die Daten automatisch in eine Excel-Datei zu speichern.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die Funktion ADOImportFromAccessTable aufrufen kannst:

Sub BeispielAufruf()
    ADOImportFromAccessTable "C:\Weekly_Report.mdb", "AbfrageName", Range("C1")
End Sub

In diesem Beispiel wird die Abfrage "AbfrageName" aus der Datenbank "Weekly_Report.mdb" in die Excel-Tabelle ab Zelle C1 importiert.


Tipps für Profis

  • Verwende Error-Handling: Um Fehler zu vermeiden, füge eine Fehlerbehandlung in Deinen Code ein, damit Du besser nachvollziehen kannst, was schiefgeht.

  • Setze auf Parameterabfragen: Wenn Du nur bestimmte Datensätze importieren möchtest, kannst Du Parameter in Deine SQL-Abfragen einfügen, um die Flexibilität zu erhöhen.

  • Automatisiere den Prozess: Überlege, ob Du das Makro automatisiert zu bestimmten Zeiten oder Ereignissen ausführen kannst, um den Importprozess zu optimieren.


FAQ: Häufige Fragen

1. Muss ich spezielle Add-Ins für Excel verwenden?
Nein, die Verwendung von ADO für den Import von Access-Daten erfordert keine zusätzlichen Add-Ins, solange Du die richtige VBA-Bibliothek referenzierst.

2. Funktioniert dies in allen Excel-Versionen?
Der oben gezeigte Code sollte in Excel 2000 und späteren Versionen funktionieren, achte jedoch darauf, dass die ADO-Referenzen korrekt gesetzt sind.

3. Kann ich auch Access-Formulare importieren?
Ja, Du kannst auch Daten aus Access-Formularen exportieren, indem Du die entsprechenden SQL-Statements anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige