views:

891

answers:

2

I have two tables in my access database that I want to be able to export to excel. I can do it by opening the table and then doing File->Export... and then choosing the format and typing in the file name. However, this way the user actually has to type the name in so there is room for misnaming the file or for saving it as the wrong format or in the wrong location. Also, the two tables have to be exported to two separate workbooks. What I want to be able to do is make a button on a form that automatically exports one table to one worksheet and the other to another worksheet, both in the same excel workbook. If putting them in the same workbook isn't possible, that's fine. I just want them to automatically be exported to the same directory my access database is saved in. If you know how to do it, an added perk might be to customize the name to include the date. That way the directory would have historical exports as well. Any advice?

+3  A: 

You can use VBA to export an Access database table as a Worksheet in an Excel Workbook.

To obtain the path of the Access database, use the CurrentProject.Path property.

To name the Excel Workbook file with the current date, use the Format(Date, "yyyyMMdd") method.

Finally, to export the table as a Worksheet, use the DoCmd.TransferSpreadsheet method.

Example:

Dim outputFileName As String
outputFileName = CurrentProject.Path & "\Export_" & Format(Date, "yyyyMMdd") & ".xls"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table1", outputFileName , True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table2", outputFileName , True

This will output both Table1 and Table2 into the same Workbook.

HTH

Lawrence P. Kelley
That worked great, but how do I force it to export to CurrentProject.Path?
Matt
Remou
In the code offered, you force it to save the file to the current path by including the path when you assign the value to the outputFileName variable. That is, stick CurrentProject.Path between the = and the " and put a \ after the quote (CurrentProject.Path omits the trailing slash).
David-W-Fenton
Good points, both. Answer has been modified to address.
Lawrence P. Kelley
A: 

Lawrence has given you a good answer. But if you want more control over what gets exported to where in Excel see Modules: Sample Excel Automation - cell by cell which is slow and Modules: Transferring Records to Excel with Automation You can do things such as export the recordset starting in row 2 and insert custom text in row 1. As well as any custom formatting required.

Tony Toews