I’m debugging some code and need to find out where a
DoCmd.TransferSpreadsheet acImport, , ".....
fails so I’ve decided to import it ‘manually’ line-by-line to see where it falls over.
I suppose something like this is what I’m looking for:
mySpreadSheet = ConnectTo(Spreadsheet.xlsx)
while(!mySpreadSheet.EOF)
get(mySpreadSheet.nextLine)
SQL("UPDATE MyTable with mySpreadSheet.nextLine")
I’ve tried Googling to no avail. Any help is much appreciated!
Additional info:
- The column names of the spreadsheet and the Access table are identical.
- Every data type is nvarchar(MAX) (Or “Memo” as Access calls it)
- The table is a linked table to SQL Server 2008
You can create an ADO connection to your spreadsheet (see Connection strings for Excel 2007), then open an ADO recordset with that connection (see StackOverflow: ADODB recordset in VBA says excel field is empty when it’s not for example).
Then move through the recordset rows, and create a SQL INSERT statement using the row’s values.
That code snipped assumes first_field and second_field are text data types. If they are numeric, lose the single quotes.
I think that does roughly what you asked. However, before resorting to code I would check whether the spreadsheet imports cleanly into a new native Access table. (Also, check whether the data types and constraints on that new table are compatible with those of the linked SQL Server table.) If that works, maybe try importing the spreadsheet directly into SQL Server from the Management Studio, or whatever tool is appropriate.