Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: steve-wonder am November 19, 2010, 12:18:36

Titel: Abfrage/Recordset per VBA in die Zwischenablage?
Beitrag von: steve-wonder am November 19, 2010, 12:18:36
Hallo zusammen,

leider wurde ich in Foren oder Google nicht fündig - daher versuche ich mal mein "Problem" zu formulieren:

Der Anwender (Access 2007) soll sich die in einem Formular angezeigen Daten (also eigentlich die dahinterstehende Abfrage) in Tabellenform in die Zwischenablage kopieren können - möglichst per Button. Die Daten will er dann (als Tabelle) in eine Email einfügen (möglichst nicht als Anhang).

Prinzipiell ist die Anforderung also ein Ersatz für Strg+A und Strg+C in der Abfrageansicht. Oder zur Not auch in der Formularansicht, dabei kommt eine, etwas komisch formatierte aber brauchbare Tabelle in der Zwischenablage heraus.

Ich bekomme die Umsetzung in VBA aber irgendwie nicht hin: Sendkeys produziert eine Fehlermeldung (Kopieren steht nicht zur Verfügung), die API-Version (per copy+paste von der MS-Internetseite geholt) ebenso: "Argumenttyp byref unverträglich".

Das der Anwender am Ende noch eine zweite Tabelle aus der DB benötigt, wäre Königsklasse: Auf Button-Klick: Tabelle 1 dazwischen etwas Text plus Tabelle 2 in die Zwischenablage.

Kann mir bitte jemand einen Tipp geben?

:-) Stefan
Titel: Re: Abfrage/Recordset per VBA in die Zwischenablage?
Beitrag von: lumbumba am November 19, 2010, 12:56:42
Und wenn du jetzt eine Abfrage erstellst, mit den Werten des Formulars, diese dann per Button öffnest?

unter 2003 klappt das dann mit den Sendkeys

DoCmd.OpenQuery "Deine Abfrage"
VBA.SendKeys "^a"
VBA.SendKeys "^c"

dann klebt zumindest bei mir die abfrage als Tabelle in der Zwischenablage
Titel: Re: Abfrage/Recordset per VBA in die Zwischenablage?
Beitrag von: steve-wonder am November 19, 2010, 13:41:21
Danke - nun habe ich ein neues Problem:
Ich will die Abfrage mit den Daten gleich wieder schließen (die interssiert den Anwender ja nicht so):

DoCmd.OpenQuery "Hitparade"
VBA.SendKeys "^a"
VBA.SendKeys "^c"
DoCmd.Close

Nun habe ich in der Zw-Ablage aber den Formularinhalt, statt der Abfrage...  Hat er die Abfrahe schon wieder zu, bevor er kopiert?

Titel: Re: Abfrage/Recordset per VBA in die Zwischenablage?
Beitrag von: lumbumba am November 19, 2010, 14:16:00
ZitatHat er die Abfrahe schon wieder zu, bevor er kopiert?
ich glaube ja. Dann kommt vor dem schließen noch ein doevents rein

DoCmd.OpenQuery "Hitparade"
VBA.SendKeys "^a"
VBA.SendKeys "^c"
DoEvents
DoCmd.Close acQuery, "Hitparade"
Titel: Re: Abfrage/Recordset per VBA in die Zwischenablage?
Beitrag von: steve-wonder am November 19, 2010, 14:58:47
Das klappt prima - danke!
Gibt es eine ähnlich komfortable Möglichkeit, zwei unterschiedliche Abfragen als Text zusammenführen und in die Zw-Ablage zu übergeben?
Titel: Re: Abfrage/Recordset per VBA in die Zwischenablage?
Beitrag von: lumbumba am November 19, 2010, 20:16:05
Ich glaube nicht. Da müssten dann doch die Api's verwendet werden. Oder per schrittweise Einfügen in die Zielapplikation. Wird aber auch nicht ohne sein.