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, TrueJeżeli nie możemy wcześniej przygotować właściwej definicji tych kwerend, możemy zrobić to dynamicznie w kodzie procedury:'itd... (True na końcu oznacza, że wysyłamy także nazwy pól)
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 NrKlientaPowyż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.