Reputation: 37
I'm thinking this might have to use VBA, but is there any way to create the following sequence of actions within the built-in MS Access macro features?:
I've seen step #3 done with VBA, but I'm wanting to be able to copy this macro between databases, so I don't know if the VBA code would be copied by a simple copy-paste of the macro. If it is, then how would you do this in VBA?
Upvotes: 0
Views: 1310
Reputation: 4099
The best way to do this is within VBA, not just because I think that step 3 can only be done using VBA, but also because you get error handling. And also, if you use in line SQL statements to perform your deletes/appends, you don't need to worry about copying extra queries over to another database - you just copy over the procedure.
Here is a short VBA procedure that performs all 3 steps for you:
Sub sExportData()
On Error GoTo E_Handle
Dim strFolder As String
Dim strFile As String
Dim strID As String
CurrentDb.Execute "DELETE * FROM [Table1];"
CurrentDb.Execute "INSERT INTO [Table1] SELECT * FROM [TableAppend];"
strFolder = "J:\downloads\"
strID=DLookup("ID","Table1")
strFile = "Table1_" & strID & Format(Date, "yymmdd") & ".xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Table1", strFolder & strFile, True
sExit:
On Error Resume Next
Exit Sub
E_Handle:
MsgBox Err.Description & vbCrLf & vbCrLf & "sExportData", vbOKOnly + vbCritical, "Error: " & Err.Number
Resume sExit
End Sub
Without knowing exactly what you are doing, it may be that you don't need to do the delete/append to Table1
. It may be possible to output the data selected in the append query directly to an Excel file.
Regards,
Upvotes: 1