Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Mahi am März 11, 2021, 14:59:49

Titel: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am März 11, 2021, 14:59:49
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
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: andyfau am März 11, 2021, 20:23:38
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

Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am April 21, 2021, 14:54:33
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.
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am April 21, 2021, 15:01:38
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
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: andyfau am April 21, 2021, 19:38:02
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.
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am April 22, 2021, 09:47:26
danke für deine Antwort, aber ich hab nicht genau verstanden wie du das meinst :(
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am April 22, 2021, 10:33:26
@andyfau kannst du bitte mir vielleicht mit dem Cod das erklären?
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: andyfau am April 22, 2021, 15:19:09
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.
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am April 29, 2021, 10:42:52
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
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: andyfau am April 29, 2021, 11:22:49
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.
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am April 29, 2021, 12:34:30
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
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: andyfau am April 29, 2021, 13:03:16
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?
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Mahi am April 29, 2021, 14:23:13
ja genau
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: andyfau am April 29, 2021, 14:57:39
Dann bau doch vor dem TransferDatasheet eine antwort = MsgBox ("Exceldatei erstellen?", vbYesNo)
 If antwort = vbYes then
     Transfer......
 end if
Titel: Re: Export von mehreren Abfragen mit VBA in unterschiedlichen Excel-Blätter
Beitrag von: Micharius am Mai 01, 2021, 21:20:28
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.