Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: starten einer Access-Abfrage über Excel

starten einer Access-Abfrage über Excel
20.10.2004 15:48:29
Exilunioner
Hallo Leute,
ich möchte eine Accessabfrage ausführen über den VBA-Code in Excel.
Dim accApp As Object
Dim ls_file As String
Dim ls_pfad As String

ls_pfad = "C:\N\"
ls_file = "sw.mdb"
If Dir(ls_pfad & ls_file) = "" Then
Beep
MsgBox ("Keine Datei gefunden.")
Else
Set accApp = CreateObject("Access.Application")
accApp.OpencurrentDatabase ls_pfad & ls_file

'Abfrage ausführen
==&gt hier sollte jetzt der Befehl stehen der entweder meine Anfügeabfrage öffnet oder
==&gt eine Prozedur in Access ausführt, die die Anfügeabfrage öffnet
accApp.closecurrentdatabase
Set accApp = Nothing
End If
End Sub
Für einige Hinweise wäre ich sehr dankbar, bis dann
michael
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: starten einer Access-Abfrage über Excel
Karl-Otto
Hallo Michael
Gib in der Recherche unter "Volltextsuche im Forumsarchiv" "Dieter Klemke" ein.
Dort wirst Du geholfen.
Gruß
KO
AW: starten einer Access-Abfrage über Excel
20.10.2004 16:15:34
Exilunioner
Hallo Karl-Otto,
leider ist das nicht das was ich Suche.
bis dann
michael
AW: starten einer Access-Abfrage über Excel
René
Du willst also Access-Daten nach Excel rüberholen? Hab ich das so richtig verstanden?
dann versuchs mal hiermit.

Sub Access_Import(DBName As String, _
Tabelle As String, _
Bereich As Range)
Dim Con As ADODB.Connection
Dim RecS As ADODB.Recordset
Dim intColIndex As Integer
Set Bereich = Bereich.Cells(1, 1)
' Datenbank öffnen
Set Con = New ADODB.Connection
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
DBName & ";"
Set RecS = New ADODB.Recordset
With RecS
' Access-Tabelle öffnen und alle Datensätze einlesen
.Open Tabelle, Con, adOpenStatic, adLockOptimistic, _
adCmdTable
For intColIndex = 0 To RecS.Fields.Count - 1
Bereich.Offset(0, intColIndex).Value = _
RecS.Fields(intColIndex).Name
Next
Bereich.Offset(1, 0).CopyFromRecordset RecS
End With
RecS.Close
Set RecS = Nothing
Con.Close
Set Con = Nothing
End Sub

Anzeige
AW: starten einer Access-Abfrage über Excel
20.10.2004 16:11:36
Exilunioner
Hallo Rene,
nein ich möchte keine Daten importieren sondern nur eine in der Access-Datei vorhandene Abfrage öffnen. Dies ist eine Anfügeabfrage die eine Tabelle in der Access-DB aktualisert.
Mein Problem ist das reine öffnen der Abfrage in Access.
bis dann
michael
AW: starten einer Access-Abfrage über Excel
René
Werden dabei irgendwelche Daten an ACCESS übergeben, oder warum soll Excel die Abfrage starten?
Anzeige
AW: starten einer Access-Abfrage über Excel
20.10.2004 16:48:45
Exilunioner
Hallo Rene,
es handelt sich um eine Anfügeabfrage die aus anderen Tabellen Werte zusammenstellen.
Das Problem besteht einzig und allein die Access-Abfrage (Sicht) zu starten.
bis dann
michael
Lösung gefunden
21.10.2004 16:15:20
Exilunioner
Hallo Leute,
habe nun endlich eine Lösung gefunden.

Sub test()
Dim accApp As Object
Dim ls_file As String
Dim ls_pfad As String
ls_pfad = "C:\Test\"
ls_file = "abc.mdb"
If Dir(ls_pfad & ls_file) = "" Then
Beep
MsgBox ("Keine Datei gefunden.")
Else
Set accApp = GetObject(ls_pfad & ls_file)
'die Abfrage wird in Access geöffnet
accApp.docmd.openquery ("testabfrage")
accApp.closecurrentdatabase
Set accApp = Nothing
End If
End Sub

bis dann
michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Access-Abfragen über Excel starten


Schritt-für-Schritt-Anleitung

Um eine Access-Abfrage über den VBA-Code in Excel auszuführen, kannst Du den folgenden Code verwenden. Dieser öffnet eine Abfrage, die in Deiner Access-Datenbank definiert ist:

Sub test()
    Dim accApp As Object
    Dim ls_file As String
    Dim ls_pfad As String
    ls_pfad = "C:\Test\"
    ls_file = "abc.mdb"

    If Dir(ls_pfad & ls_file) = "" Then
        Beep
        MsgBox ("Keine Datei gefunden.")
    Else
        Set accApp = GetObject(ls_pfad & ls_file)
        ' Die Abfrage wird in Access geöffnet
        accApp.DoCmd.OpenQuery ("testabfrage")
        accApp.CloseCurrentDatabase
        Set accApp = Nothing
    End If
End Sub

Dieser Code überprüft, ob die Datei vorhanden ist, und führt dann die angegebene Access-Abfrage aus. Achte darauf, den Namen der Abfrage (in diesem Fall "testabfrage") entsprechend Deiner Access-Abfrage anzupassen.


Häufige Fehler und Lösungen

  • Fehler: „Keine Datei gefunden.“

    • Überprüfe den Pfad und den Dateinamen. Stelle sicher, dass die Datei tatsächlich im angegebenen Verzeichnis vorhanden ist.
  • Fehler: „Zugriff verweigert.“

    • Stelle sicher, dass Du die richtigen Berechtigungen hast, um die Access-Datenbank zu öffnen.
  • Fehler: „Abfrage nicht gefunden.“

    • Überprüfe, ob der Name der Abfrage korrekt im Code angegeben ist.

Alternative Methoden

Falls Du eine andere Herangehensweise bevorzugst, kannst Du auch die ADODB-Methoden verwenden, um Daten aus Access in Excel zu importieren. Hier ist ein Beispiel:

Sub Access_Import(DBName As String, _
Tabelle As String, _
Bereich As Range)
    Dim Con As ADODB.Connection
    Dim RecS As ADODB.Recordset
    Dim intColIndex As Integer
    Set Bereich = Bereich.Cells(1, 1)

    ' Datenbank öffnen
    Set Con = New ADODB.Connection
    Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBName & ";"
    Set RecS = New ADODB.Recordset
    With RecS
        ' Access-Tabelle öffnen und alle Datensätze einlesen
        .Open Tabelle, Con, adOpenStatic, adLockOptimistic, adCmdTable
        For intColIndex = 0 To RecS.Fields.Count - 1
            Bereich.Offset(0, intColIndex).Value = RecS.Fields(intColIndex).Name
        Next
        Bereich.Offset(1, 0).CopyFromRecordset RecS
    End With
    RecS.Close
    Set RecS = Nothing
    Con.Close
    Set Con = Nothing
End Sub

Diese Methode eignet sich, wenn Du Daten direkt in Excel importieren möchtest, anstatt eine Abfrage auszuführen.


Praktische Beispiele

Ein häufiges Beispiel für eine Access-Abfrage ist eine Anfügeabfrage, die Daten aus mehreren Tabellen in einer einzigen Tabelle zusammenführt. Hier ist eine vereinfachte Version einer solchen Abfrage:

accApp.DoCmd.OpenQuery ("AnfügeabfrageName")

Ersetze „AnfügeabfrageName“ mit dem Namen Deiner Anfügeabfrage in Access.


Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next, um potenzielle Laufzeitfehler abzufangen und eine benutzerfreundliche Fehlermeldung anzuzeigen.

  • Optimierung der Performance: Wenn Du häufig auf Access-Abfragen zugreifst, erwäge, eine persistente Verbindung zur Datenbank zu halten, statt sie bei jedem Zugriff neu zu öffnen.

  • Dokumentation: Halte Deinen Code gut dokumentiert, um die Wartung und zukünftige Änderungen zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich eine Access-Abfrage in Excel starten?
Du kannst eine Access-Abfrage in Excel mit VBA starten, indem Du ein Objekt der Access-Anwendung erstellst und die Methode OpenQuery verwendest. Beispiel siehe oben.

2. Was muss ich beachten, wenn ich mit Access und Excel arbeite?
Achte darauf, dass die Datenbankdatei korrekt verknüpft ist und dass Du die richtigen Berechtigungen hast, um auf die Daten zuzugreifen. Außerdem sollten die Datenquellen korrekt konfiguriert sein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige