Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage/Recordset per VBA in die Zwischenablage?

Begonnen von steve-wonder, November 19, 2010, 12:18:36

⏪ vorheriges - nächstes ⏩

steve-wonder

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

lumbumba

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
---

steve-wonder

#2
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?


lumbumba

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"
---

steve-wonder

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?

lumbumba

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.
---