Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

abfrage export excel blattname flexibel

Begonnen von ReneB, Juni 25, 2019, 08:27:57

⏪ vorheriges - nächstes ⏩

ReneB

Hallo Forum,

ich nutze aktuell folgenden Code für den Export einer Abfrage nach Excel.
DoCmd.TransferSpreadsheet acExport, 8, "Export_Verkauf_nach_Produktgruppen_qry", _
                              "O:\Logistik\Verkauf nach Produktgruppen\Verkauf.xls", True, _
                              "Verkauf_nach_Produkt"
Ich würde gern den Blattnamen flexibel gestalten über ein Eingabefeld oder bsp. das aktuelle jahr, zumindest nicht statisch wie jetzt. Aktuell passe ich manuell den Blattnamen an und das ist ein wenig nervig.
Hat jemand so etwas schon gemacht?

Danke im Voraus.

Rene

PhilS

Zitat von: ReneB am Juni 25, 2019, 08:27:57
ich nutze aktuell folgenden Code für den Export einer Abfrage nach Excel.
[...]Ich würde gern den Blattnamen flexibel gestalten über ein Eingabefeld oder bsp. das aktuelle jahr, zumindest nicht statisch wie jetzt.
Ich fürchte, das geht nur über Excel-Automation. D.h. du erzeugst eine Excel-Instanz per Code, öffnest die Excel-Datei und benennst das Sheet um.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

Der automatisch erzeugte Blattname richtet sich doch nach dem Namen der Abfrage, die man exportiert. Da könnte man doch auf einen Gedanken kommen ...
Mit freundlichem Glück Auf!

Eberhard

ReneB

Hallo,

nein der Blattname wurde von mir festgelegt und leider fehlt mir die Idee:(. Ich schlage mich gerade mit dem Vorschlag von PhilS rum, aber bin da noch nicht weiter. Vieleicht kann ja jemand ein Beispiel posten, wenn verfügbar.

Danke.

Rene

ebs17

Deine Logik kann ich nicht nachvollziehen.

Eine passende Abfrage zu erstellen ist einfacher und schneller (direkt zur Laufzeit in Access). Das relativ große Excelobjekt separat zu öffnen würde ich nur in  Not und bei erheblicheren Anforderungen.

ZitatBeispiel posten
CreateQueryDef: Der Rest dazu in der Hilfe nachzulesen.
Mit freundlichem Glück Auf!

Eberhard

ReneB

Hallo,

ich versteh nicht was du meinst. Der Export nach Excel erfolgt doch über eine Abfrage. Diese beinhaltet alle Daten die ich benötige. Ich öffne Excel auch gar nicht. Das Ergebnis der Abfrage wird exportiert in das Blatt "Verkauf_nach_Produkt", das wars. Ich hätte halt nur gern eine Inputbox oder ähnliches, wo ich diesen Blattnamen flexibel festlegen kann. Wir machen monatliche Auswertungen, nix grosses, aber es wäre super, wenn ich mich um die Benennung der Blätter nicht extra kümmern müsste.

Danke.

Rene

DF6GL

Hallo,

Zitatich versteh nicht was du meinst. Der Export nach Excel erfolgt doch über eine Abfrage

eben....

benenne die Abfrage entspr. dem gewünschten Blatt-Namen und setz diesen Abfragenamen bei DoCmd.TransferSpreadsheet  ein...


Das kann entweder manuell geschehen oder Du schreibst ein paar Zeilen Code, der das  bewerkstelligt.

Wo hakt es dabei?


ReneB

Hallo,

erstmal danke für Deine Bemühungen, aber der Name der Abfrage wäre doch auch statisch, waß ergo zum gleichen Resultat führen würde, das Tabellenblatt hat immer den gleichen Namen.
Das hilft leider nicht weiter.

Grüsse
Rene

ebs17

Was man einmal tut, kann man wieder tun.
Findet so ein Gedanke Eingang in Deine Vorstellungswelt?
Mit freundlichem Glück Auf!

Eberhard

ReneB


DF6GL

Hallo,

dann nochmal eingänglicher:

Schreibe eine Sub oder Funktion, in der per Inputbox der Abfragename eingeben wird.
Erzeuge mit CreateQueryDef  eine Abfrage mit den soeben eingebenden Namen und weise der den passenden SQL-String zu. (Den/die kannst Du per String in VBA gleich als Literal hinterlegen oder ihn aus einer gespeicherten Abfrage auslesen.)
Exportiere diese neue Abfrage dann mit TransferSpreadsheet  nach Excel.


fertig.



ReneB

Hallo an Alle,

ich habe das jetzt über Excel gelöst, da der Export eh dorthin erfolgt. Funktioniert alles super. Danke für die Anregungen.

Schöne Grüsse

Rene