16 Jak zapisać dane do oddzielnych zakładek w Excelu?

Najprościej wykorzystać w tym celu metodę TransferSpreadsheet, która ma tę właściwość, że nie tworzy za każdym razem nowego pliku, ale dołącza dane do już istniejącego arkusza jako kolejną zakładkę.

Nazwa tworzonej zakładki jest określona przez nazwę wysyłanej kwerendy (lub tabeli), dlatego wystarczy przygotować zestaw potrzebnych kwerend o nazwach np. Zakladka1, Zakladka2, Zakladka3... i je kolejno wysyłać.

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel5, "Zakladka1", Plik_XLS, True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel5, "Zakladka2", Plik_XLS, True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel5, "Zakladka3", Plik_XLS, True
'itd... (True na końcu oznacza, że wysyłamy także nazwy pól)
Jeżeli nie możemy wcześniej przygotować właściwej definicji tych kwerend, możemy zrobić to dynamicznie w kodzie procedury:
Dim  qry As QueryDef, NrKlienta As Byte
For NrKlienta = 1 To 10
	Set qry = CurrentDb.QueryDefs("Klient_" & NrKlienta)
	qry.SQL =  "SELECT * FROM Tabela1 WHERE (ID=" & NrKlienta & ");"
	DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel5, qry.Name, "C:\Klienci.XLS"", True
Next NrKlienta
Powyższy kod tworzy 10 zakładek w pliku C:\Klienci.XLS o nazwach Klient_1, Klient_2, itd oraz wysyła do nich odpowiednie dane.

K. P.