Instead of using a macro to export a table, you can simply create code to open the file and add data to it.
How to use
Just copy the code into the VBA module in your application and call it like this:
' Export the Table "Orders" to "orders.csv", appending the data to the ' ' existing file if there is one. ' ExportQueryToCSV "Orders", "C:\orders.csv", AppendToFile:=True ' Export the result of the query to "stock.csv" using tabs as delimiters ' ' and no header or quotes around strings ' ExportQueryToCSV "SELECT * FROM Stock WHERE PartID=2", _ "C:\stock.csv", _ AppendToFile:=False, _ IncludeHeader:=False, _ Delimiter:=chr(9), _ QuoteString:=false
code
'----------------------------------------------------------------------------' ' Export the given query to the given CSV file. ' ' ' ' Options are: ' ' - AppendToFile : to append the record to the file if it exists instead of ' ' overwriting it (default is false) ' ' - Delimiter : what separator to use (default is the coma) ' ' - QuoteString : Whether string and memo fields should be quoted ' ' (default yes) ' ' - IncludeHeader: Whether a header with the field names should be the first ' ' line (default no) ' ' Some limitations and improvements: ' ' - Memo containing line returns will break the CSV ' ' - better formatting for numbers, dates, etc ' '----------------------------------------------------------------------------' Public Sub ExportQueryToCSV(Query As String, _ FilePath As String, _ Optional AppendToFile As Boolean = False, _ Optional Delimiter As String = ",", _ Optional QuoteStrings As Boolean = True, _ Optional IncludeHeader As Boolean = True) Dim db As DAO.Database Dim rs As DAO.RecordSet Set db = CurrentDb Set rs = db.OpenRecordset(Query, dbOpenSnapshot) If Not (rs Is Nothing) Then Dim intFile As Integer ' Open the file, either as a new file or in append mode as required ' intFile = FreeFile() If AppendToFile And (Len(Dir(FilePath, vbNormal)) > 0) Then Open FilePath For Append As
Note that this is not ideal, and you may have to adapt the code to display how you want to format the data, but in most cases the default values should be good.
source share