Access-Abfrage von Excel aus ausführen?

Hallo Experten,

nachdem ich mehr oder weniger Erfolgreich mit meinen Excel Dateien jongliert habe und Auswahlabfragen ohne Probleme von Excel aus starten kann habe ich jetzt ein anderes Problem…
Und zwar brauche ich einmal eine Anfüge und einmal eine Löschabfrage, die ich von Excel aus anstossen müsste.
Nun habe ich schon versucht das mit dem SQL Query Tool zu lösen, aber ein Makro wird leer, wenn das query keine Daten zurückliefert. Sprich ich sehe keinen Code, wie ich das vielleicht hinbiegen könnte…

Weiss jemand von euch rat, wie ich eine solche Access-Abfrage von Excel aus anstossen kann?

vielen Dank
Munich

Und zwar brauche ich einmal eine Anfüge und einmal eine
Löschabfrage, die ich von Excel aus anstossen müsste.
Nun habe ich schon versucht das mit dem SQL Query Tool zu
lösen, aber ein Makro wird leer, wenn das query keine Daten
zurückliefert. Sprich ich sehe keinen Code, wie ich das
vielleicht hinbiegen könnte…
Weiss jemand von euch rat, wie ich eine solche Access-Abfrage
von Excel aus anstossen kann?

Hi Munich,
ich kann punktuell in Excel was, Access kenne ich nicht. Ich verstehe nur das Gebäude an dem die Bahnhofsuhr hängt wenn du eine Anfüge- bzw Löschabfrage erwähnst, sagt mir Excelbezogen nix.
Und warum ein Makro leer wird wenn ein query keine Daten liefert ist mir dito sehr unklar.
ich hab access auf dem Rechner, aber noch nie genutzt, kannste bitte mal deine Anfage für mich verständlicher umformulierwen , dann teste ich gerne wie ich aus Excel heraus was in Access mache.
Egal ob Word Powerpoint Corel Draw ( ja, Corel draw hat auch VBa, weiss ich auch erst seit kurzem) usw, bisher konnte ich 95% der Anfragen lösen obwohl ich nur Excel/EcelVba kann, und die Programme nicht kenne/nutze, aber ich bin immer an so Borderline-Aufgaben (ausserhalb von Excel) interessiert um zu lernen. Deshalb verklicker mir um was es überhaupt geht und ich löse das oder ich melde zurück k.A. wie da die Lösung ist.

Gruß
Reinhard

Hallo Reinhard,

danke für Dein Angebot, aber das ist glaub ich echt ne harte Nuss…
Wenn Dus schaffst hast Du Dir sicher mehr als einen Stern verdient :wink:

also…
Wenn ich Makros aufzeichne und dann über
Daten -> Externe Daten Importieren -> Neue Abfrage erstellen…
eine Access-Abfrage auswähle wird mir diese Abfrage in Excel zurückgegeben.
Allerdings handelt es sich dann um Select-Abfragen
(Select * from tablename). Sprich es gibt immer Ergebnisse - selbst wenn es nur die Spaltennamen sind.
Anschliessend beende ich den Aufzeichnungsmodus und schau mir den erzeugten Code an. Da finde ich dann auch wieder das Select-Statement.
Wenn ich jetzt aber nicht den Assistenten wähle und zum Beispiel mein Delete-Statement ausführe, dann gibt es keine Spaltennamen - und so wird auch keine Rückgabe an Excel geliefert.
Das aufgezeichnete Makro ist dann leer.
Ich kann also weder Anfüge- noch Löschabfrage von Excel von mit dieser Funktion aus abrufen…
Hilft Dir das?

Ciaó
Munich

Hallo Munich,
ich erzeuge mir heute abend oder morgen eine Access-Datei, ich glaube die heissen .mdb. Dann erzeuge ich eine Abfrage (query) in Excel und lass dabei den Rekorder laufen. Wenn ich alles richtig verstanden habe wird das aufgezeichnet und im Code ist wohl ein Select-Befahl der z.B. bestimmte Spalten oder Bereiche in der Access-Tabelle auswählt
Dies scheint zu klappen, aber du möchtest mittels Excel-Query bzw VBA in einer Access-Datei Einträge anfügen bzw. löschen und der Rekorder zeichnet dieses nicht auf.
Wenn dies dein Anliegen ist so kriege ich das sicher hin, denn ich habe die CD die in der nachfolgenden Beschreibung als „Vollversion“ genannt wird. Hatte PC-Probleme die mich zur Festplattenformatierung zwangen und rüste Zug um Zug meinen PC wieder auf, die CD kommt demnächst wieder drauf. Und dann kann ich dir den Code schicken und wir finden zusammen sicher auch 'ne Lösung um Einträge zu löschen, habe da jetzt nur gesehen dass man Einträge anfügen kann…
Gruß
Reinhard
Die Beispielarbeitsmappe ist nur in der Vollversion verfügbar

Hier können Sie das Tutorial bestellen

Um Datensätze aus einer Datenbank lesen bzw. in eine Datenbank schreiben zu können, muss das Programm Microsoft Query installiert sein. Eine Schritt-für-Schritt-Anleitung zur Installation finden Sie hier:

Microsoft Query

Mit Microsoft Query werden auch die Treiber für Data Access Objects (DAO) installiert und stehen Ihnen fortan zur Verfügung.

Um den Code nutzen zu können, müssen Sie in der Entwicklungsumgebung einen Verweis zu DAO erstellen. Eine Schritt-für-Schritt-Anleitzung zur Erstellung finden Sie hier:

Verweis erstellen

Ziel des nachfolgenden Beispiel ist es, Datensätze, die in eine Access-Datenbank geschrieben wurden, über die Standard-Excel-Datenmaske zu editieren, neue hinzuzufügen, alte zu löschen und die Änderungen wieder nach Access zu exportieren.

*
Daten in eine Access-Datenbank einlesen

o Prozedur: dbWriteData
o Art: Sub
o Modul: Standard
o Zweck: Daten in eine Access-Datenbank schreiben
o Ablaufbeschreibung:

  • Variablendeklaration
  • Objektvariable mit dem Quelldatenblatt belegen
  • Integer-Variable mit der Spaltenanzahl belegen
  • String-Variable mit Dateipfad und Dateiname belegen
  • String-Variable mit dem Tabellennamen belegen
  • Fehlerroutine, falls die Zieldatenbank noch nicht existiert
  • Zieldatenbank, falls vorhanden, löschen
  • Fehlerroutine Ende
  • Die Variable für die Datenfelder gem. der Anzahl der Spalten redimensionieren
  • Datenbank erstellen
  • Datentabelle erstellen
  • Die Datenfelde belegen
  • Die Tabelle der Datenbank hinzufügen
  • Die Datenbank schließen
  • Die Prozedur zum Einlesen der Datensätze aufrufen
    o Code:

Der Code ist nur in der Vollversion verfügbar

Hier können Sie das Tutorial bestellen
*
Datensätze in die Access-Datenbank einlesen

o Prozedur: WriteData
o Art: Sub
o Modul: Standard
o Zweck: Datensätze in eine Access-Datenbank schreiben
o Ablaufbeschreibung:

  • Variablendeklaration
  • Datenbank öffnen
  • Datentabelle öffnen
  • Startzeile festlegen
  • Schleife über alle Zeilen bilden
  • Neuen Datensatz hinzufügen
  • Startspalte festlegen
  • Schleife über alle Spalten bilden
  • Datenfelder mit den Zellinhalten belegen
  • Tabelle aktualisieren
  • Datenbank schließen
    o Code:

Der Code ist nur in der Vollversion verfügbar

Hier können Sie das Tutorial bestellen
*
Datensätze aus einer Access-Datenbank einlesen

o Prozedur: dbReadData
o Art: Sub
o Modul: Standard
o Zweck: Datensätze aus einer Access-Datenbank einlesen
o Ablaufbeschreibung:

  • Variablendeklaration
  • Objektvariable mit dem Zieldatenblatt belegen
  • String-Variable mit Dateipfad und Dateiname belegen
  • String-Variable mit dem Tabellennamen belegen
  • Prüfung, ob die Quelldatenbank vorhanden ist
  • Wenn nein, Warnmeldung und Ausstieg
  • Zielblatt leeren
  • Zellen als Text formatieren
  • Datenbank öffnen
  • In einer Schleife die Spaltenköpfe einlesen
  • Datentabelle öffnen
  • Erste Zielzeile festlegen
  • Schleife über alle Datensätze bilden
  • Zeilenzähler eins hochzählen
  • Schleife über alle Spalten bilden
  • Datensatz einlesen
  • Datenbank schließen
  • Spaltenbreite optimieren
  • Erste Zeile mit dem Schriftattribut Bold belegen
  • Excel-Datenmaske aufrufen
    o Code:

Der Code ist nur in der Vollversion verfügbar

Hier können Sie das Tutorial bestellen

1 „Gefällt mir“

Hi Reinhard,

ich hab mir das unten jetzt mal durchgelesen, aber mit makro aufzeichnen komm ich da sicher nicht weit…
naja und zum selbst schreiben bin ich zum einen zu doof und zum anderen versteh ich das alles auch nicht 100%ig :-