我需要使用Excel中的VBA来加载访问中的Excel工作簿并将其传输到数据库。
Dim acc As New Access.Application
acc.OpenCurrentDatabase "C:\Test.xls"
我到目前为止,Excel崩溃并且必须重新启动。我的计划是使用以下内容,但我无法做到这一点。
acc.DoCmd.TransferDatabase
有什么想法吗?我用谷歌搜索了几天,什么都没有。
*编辑:感谢您的答复到目前为止,我不得不使用Excel VBA。有一个excel电子表格,其中有一堆空列被Jet引擎识别为已定义的列,实际上太多了> 255(或者> 256?)。我不想出于任何原因打开Excel工作表(这在网络上花了太长时间)。我没有选项或选择正确格式化或清理它。如你所愿,很容易将XLS电子表格转换为访问内部的MDB数据库,但这不是一个选项。就像我说的,我需要在Excel中使用VBA来操作访问对象以将XLS工作簿转换为MDB数据库;有了这个,剩下的就是蛋糕了。非常感谢!我喜欢这个网站。
答案 0 :(得分:1)
如果您能够在Microsoft Access中使用VBA,则此任务很简单; e.g:
DoCmd.TransferSpreadsheet , , _
"tblImportFromExcel","C:\path\to\myfile.xls", True, "A1:B200"
TransferSpreadsheet
documentation。
答案 1 :(得分:0)
Adam Bernier建议的解决方案有什么问题(PowerUser增加了关于在Excel中使用访问对象的问题);你最后的评论是在那些建议之后,你没有回复。
Dim acc As New Access.Application
acc.OpenCurrentDatabase "C:\Test.mdb"
acc.DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
Spreadsheettype:=acSpreadsheetTypeExcel8, _
TableName:="tblImportFromExcel", _
Filename:="C:\path\to\myfile.xls", _
HasFieldNames:=True, _
Range:="A1:B200"
(根据需要进行调整,尤其是HasFieldNames和Range)。如果这不起作用,那么Excel表格可能出现了问题。
我能想到的唯一另一件事(但这意味着打开文件)是将Excel工作表保存为XML并通过XSLT以更合适的格式转换值,然后导入生成的XML。但这可能是过度的(你的文件有多复杂,你需要多久进行一次导入)。
HTH 安德烈亚斯