我正在尝试将数据从Excel导入Access。
使用
选择Excel文件Function selectFile()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
If .Show Then
selectFile = .SelectedItems(1)
Else
End
End If
End With
Set fd = Nothing
End Function
所选文件将始终只有1个工作表
到目前为止,我一直在使用TransferSpreadsheet
DoCmd.TransferSpreadsheet acImport, 8, "Summary", selectFile(), True
一切都很好。但是,所选文件可能包含其他不需要的数据列。我只需要第一列数据中的数据,第1行是标题行,excel表中的标题与Access“摘要”表中的前4列标题相匹配(“OFFER”,“DESCRIPTION”,“Total AMRM” “,”RMACCNUM“)。
另一个问题是带有数据的工作表可以命名为“Sheet1”,“Summary”,或者其他东西!
我已经尝试过INSERT INTO ...... SELECT .... FROM但是无法正确获取语法。
非常感谢任何帮助。
答案 0 :(得分:1)
使用临时位置来映射(和过滤)问题,让您更好地控制流程
DoCmd.TransferSpreadsheet acImport, 8, "TempSummary", selectFile(), True
然后检查映射,并插入数据:
CurrentDB.Execute "INSERT INTO Summary (OFFER, DESCRIPTION, [Total AMRM], RMACCNUM) " & _
"SELECT(OFFER, DESCRIPTION, [Total AMRM], RMACCNUM) " & _
"FROM TempSummary"
最后,删除Temp表:
CurrentDb.TableDefs.Delete "TempSummary"
答案 1 :(得分:0)
您最好链接电子表格。
然后创建一个使用链接表作为源的简单选择查询。在这里,根据需要重命名(别名)字段,并进行简单的转换和过滤,如将文本数据转换为数字,将文本日期转换为真实日期,排除空值等等。
保存此查询并将其用于进一步处理,例如将记录附加到现有表格。