Wie Exportiere ich 2 Abfragen, um ein einzelnes Arbeitsblatt in excel aus access
Bin ich mit TransferSpreadsheet zu exportieren einer Abfrage aus access nach excel und es funktioniert gut.
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "qryName", "test1.xls", True
Nun ich habe eine Abfrage und möchte ich hinzufügen, dass die Daten aus dieser Abfrage auf das gleiche Arbeitsblatt. Wie kann ich dies tun?
- Versuchen Sie arbeiten mit Tabelle-Objekte anstelle des DoCmd. Siehe Dritter post hier: pcreview.co.uk/forums/...
- Wenn deine 2 Abfragen sind bei allen ähnlich, Sie konnte auch union zusammen, dann verwenden Sie
DoCmd.TransferSpreadsheet
auf die union-Abfrage. - Was passiert, wenn Sie den selben Befehl erneut mit der zweiten Abfrage ? Es tut fügen Sie die Daten, die über oder-schreiben ?
- Eigentlich bin ich mit Objekten zum Bearbeiten der excel-Datei die Formatierung und die Sachen nach der TransferSpreadsheet. Ich denke, dass der Unterschied zwischen meinem code und das Beispiel, das Sie darauf hingewiesen, die Verwendung von OpenRecordset zum übertragen von Daten nach excel statt TransferSpreadsheet. Vielleicht kann ich verwenden OpenRecordset nach der TransferSpreadsheet-für die zweite Abfrage zum anfügen der Daten an dem gleichen Arbeitsblatt.
- Es überschreibt.
- Holtzman ist es ziemlich ähnlich. Aber der Grund, warum ich bin mit zwei Abfragen ist, weil ich will, zu Bearbeiten, die Formatierung, die einige der Zeilen zwischen diesen 2 Tabellen. Meine Idee war also export der ersten Abfrage, Bearbeiten Sie die Zeilen nach der letzten Zeile, Anhängen zweiten Abfrage.
- Wenn die beiden Abfragen sind die gleichen Parameter, könnte Sie erstellen Sie eine temporäre Tabelle in Access hat von der ersten Abfrage der UNION zusätzliche Zeilen Abfrage-UNION zweite Abfrage? zB
SELECT name FROM tbl WHERE id Is Not Null UNION SELECT 'next dataset' FROM tbl UNION SELECT name FROM tbl WHERE id Is Null
- wenn Ihnen die übertragung von zwei Abfragen mit demselben Namen überschreibt, wenn Sie unterschiedliche Namen haben, Sie werden geschrieben, um separate Arbeitsblätter mit Namen für die Abfrage ein, z.B. "Abfrage1", "query2". Ich schrieb vor kurzem über dieses auf SO. In diesem Fall denke ich, automation wäre die beste Wette.
- Wie Sie sehen können aus allen Kommentaren gibt es mehrere Möglichkeiten um ihn herum. Wenn alles, was Sie tun, ist die Bearbeitung von excel-Formatierung, können Sie es nicht tun, dass nach der übertragung der UNION-Abfrage? Oder im schlimmsten Fall, können Sie exportieren Sie zwei Abfragen, wie @Remou vorgeschlagen hat, als dies bei der Bearbeitung und kopieren Sie die 2. Platte über nach, dass, alle in der XL-Objekt.
- Ich würde nicht empfehlen in eine GEWERKSCHAFT. Es ist chancy in diesem Fall. Das ganze kann man mit sehr wenig automatisiert.
- Einige Hinweise: stackoverflow.com/questions/5043021/...
- Ich habe es mit CopyFromRecordset. @StuckAtWork Sie mich auf der rechten Spur mit, dass forumlink also, wenn Sie Antworten, kann ich markieren Sie Ihren Beitrag als Antwort. Vielen Dank an alle für die Antworten, ich werde mein code bald, als Beispiel. Remou vielen Dank für diesen link als zusätzliche Referenz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für meine erste Abfrage, die ich verwenden
Für die zweite Abfrage, die ich steckte es in einen recordset
Dann habe ich nur die Kopie dieses recordset an das Arbeitsblatt mit CopyFromRecordset.
objApp.ActiveSheet.UsedRange.Zeilen.Count zurück, die letzten verwendeten Zeile Nummer. Ich fügte hinzu, + 2, denn ich möchte eine leere Zeile zwischen den beiden Abfragen.
Hinzufügen, ich habe einen performancetest. Getestet habe ich diese Methode mit 500.000 Datensätze. Die Tabelle mit 500k Zeilen, die erste Abfrage mit 250k Zeilen, die zweite Abfrage mit der OpenRecordSet -) mit 250k Zeilen. Es dauerte etwa 10 Sekunden zu generieren, die excel-Datei ein Blatt und zeigt die Daten auf einem E6600 (2,40 Ghz), 4 GB ram Maschine mit access/excel 2010.
EDIT:
Einem anderen Weg zu erreichen, das gleiche würde mit TransferSpreadsheet 2 mal.
Diese erstellen 2 Blätter in der Arbeitsmappe, dann kopieren Sie einfach die Daten von einem Arbeitsblatt in das andere. Ich denke die Leistung wird die gleiche sein, aber nicht sicher, ich werde stick mit der OpenRecordSet.