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
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
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.
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
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.
danke für deine Antwort, aber ich hab nicht genau verstanden wie du das meinst :(
@andyfau kannst du bitte mir vielleicht mit dem Cod das erklären?
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.
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
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.
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
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?
ja genau
Dann bau doch vor dem TransferDatasheet eine antwort = MsgBox ("Exceldatei erstellen?", vbYesNo)
If antwort = vbYes then
Transfer......
end if
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.