Juni 15, 2021, 22:13:59

Neuigkeiten:

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


Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter

Begonnen von Mahi, März 11, 2021, 14:59:49

⏪ vorheriges - nächstes ⏩

Mahi

Hallo ihr lieben,

weißt jemand von euch, wie ich durch einen Knopfdruck in Access mit Hilfe von VBA ungefähr 7 Abfragen aus Access in 7 Arbeitsblätter in einer Excel-Datei exportieren kann.
Das Ziel ist, dass jede Abfrage in einem Excel-Blatt angezeigt wird und dort später von Mitarbeitern bearbeitet wird.

Ich bedanke mich im Voraus.

Mahi

andyfau

Hallo,
in Excel kann man unter dem Reiter "Daten" je Blatt eine Tabelle oder Abfrage aus Access  dynamisch verbinden. Die Exceldatei wird dann als .xlsm abgelegt. In der AccessDB genügt dann der Aufruf der Excel.exe mit Parameter DeineExceldatei.(Entweder über ein Makro oder per Shellbefehl aus VBA) Dabei werden die aktuellen Daten aus Access dann automatische immer wieder aktualisiert in die Excel-Tabellenblätter übernommen.
Wenn man in Excel im Feld "Was möchten Sie tun?" eingibt "Daten aus Access übernehmen" wird man ganz gut geführt.
Hoffe das hilft ein wenig weiter-
Beste Grüße
Andreas


Mahi

kann jemand vielleicht mir helfen, wie man die Abfragen jedes Mal in einem neuen Workbook in excel exportiert ?
Also ich habe die Abfragen jetz exportiert aber die werden in einer Excel-Datei, welche ich vorher angelegt hab, gespeichert.

Mein Ziel ist aber jetzt, wenn ich auf den Button anklicke, die Abfragen werden in einem neuen Book geöffnet und danach wird man gefragt, wo man diese Excel Datei speichern möchte.

Mahi

Also mein Code sieht so aus :

Private Sub command1_Click

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, ''Abfrage'', ''Dateipfad der Excel'', True, ''Name Tabellenblatt''

Set xlBook=xlApp.Workbooks.open(Dateipfad) das ist nicht mein Ziel :(

End Sub

also ich möchte aber nicht, dass die Abfragen in der Excel Datei geöffnet werden, sondern ich will dass mir jedes mal ein neues Workbook geöffnet wird, mit meinen 7 Abfragen in 7 Tabellenblätter

VG
Mahi

andyfau

Hallo,
da Du die Tabelle per VBA exportierst gibst Du ja den Dateipfad samt Name dort vor. Daraus folgt, das der Dateinamestring beliebig zusammengebaut werden kann und z.B. um das Datum ergänzt werden kann. So erhältst Du bei jedem Aufruf eine neue Exceldatei.

Mahi

danke für deine Antwort, aber ich hab nicht genau verstanden wie du das meinst :(

Mahi


andyfau

Hi,
baue den Pfadnamen als String zusammen. Achte darauf, dass der Name der Exceldatei im Pfad noch ohne .xls ist,
dann der Format folgt und dann das .xls angefügt wird.

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Abfrage", "Dateipfad_der_Excel" & Format(Now, "YYYYMMDDHHMMSS") & ".xls", True, "Name_Tabellenblatt"
So erhält deine Datei einen sekundengenauen Zeitstempel im Namen.

Mahi

Hi,

leider diese Funktion ist nicht was ich im Rahmen meiner Aufgabe machen muss, danke für deine Hilfe aber.

ich versuche dann meine Frage irgendwie anders formulieren ;)

Das Ziel ist, dass ungefähr 8 Abfragen in unterschiedlichen Excel-Blätter exportiert und angezeigt werden, das habe ich hingekriegt indem ich diesen Code verwendet hab:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, ''Abfrage'', ''Dateipfad der Excel'', True, ''Name Tabellenblatt''

soweit so gut.

nächster Schritt wäre die Anzeige der exportierten Abfragen in Excel-Datei, indem man das Code :
Set xlBook=xlApp.Workbooks.open(Dateipfad) schreibt , das will ja aber nicht .

Ich will, dass jedes Mal wenn ich auf den Button anklicke, meine Abfragen in einem neuen Workbook angezeigt werden und mich fragt wo das Excel Datei speichern werden soll .

Also besser gesagt, wir wollen in unserem Code auch schreiben, dass gleichzeitig eine Excel Datei erstellt werden soll, in der unsere exportierten Abfragen angezeigt werden sollen, nicht in der vorher erstellete .xls Datei

andyfau

Hallo,
Was heißt: Das will ja aber nicht? Welche Fehlermeldung bekommst Du?
Der Set Befehl weist der Variablen xlBook ein Excel-Objekt zu. Hast du das als Objekt deklariert, etc.?
Es gibt im Forum einige Beiträge zum Thema Excel aus Access öffnen und bearbeiten.
Dort solltest Du fündig werden.

Mahi

Ich bekommen keine Fehlermeldung, das war nur ein Tippfehler von mir :)

Ich wollte sagen " Das will ich ja aber nicht "

Mir ist nur wichtig zu wissen, wie man im Code schreiben kann, dass gleichzeitig eine Excel Datei erstellt werden soll, in der unsere exportierten Abfragen angezeigt wird, nicht in der vorher erstellete .xls Datei

andyfau

Sorry, aber ich verstehe deine Frage nicht. Du willst eine Exceldatei nicht sofort erstellen, sondern, dass der Anwender vorher gefragt wird, ob überhaupt eine Excel erstellt werden soll?


andyfau

Dann bau doch vor dem TransferDatasheet eine antwort = MsgBox ("Exceldatei erstellen?", vbYesNo)
 If antwort = vbYes then
     Transfer......
 end if

Micharius

Was du auch versuchen kannst, wenn ich dich richtig verstehen und du nicht eine bestehende Excel Datei modifizieren möchtest, sondern eine "neue, unverbrauchte" Datei willst: Verwende statt einer .xlsx oder xlsm Datei eine Excel Vorlage , "Speichern unter" in Excel als .xltx oder xltm, und verwende diesen Dateinamen in deinem Access VBA Code. Auf Basis der .xlt? Datei wird dann deine neue Excel Datei erstellt.