我正在尝试编写一个将Excel数据推送到Access的宏。最初我只是把它写成开放Access作为一个对象并以这种方式进行,但它非常慢。所以现在我写它来使用ADO连接。如果我从我所在的文件以外的任何文件写入,我可以使它工作,但是,因为这是一个功能区按钮,只使用我所在的文件,我需要它来工作。以下是我的代码。我得到的错误是:
运行时错误-2147217911(80040e09)无法更新。数据库或对象是只读的。
这是愚蠢的,因为我没有更新Excel文件,但这是微软。有什么想法吗?
Transfers2 = ActiveWorkbook.FullName & "].[" & ActiveSheet.Name & "$]"
'C:\temp\ContractToolSetV2.xlsm].[Sheet1$] - this would work, since it is not the file open
Dim con As Object ''Create ADODB Connection
Set con = CreateObject("ADODB.Connection")
SQLcmd = "Insert INTO tblExcelImportCT Select * FROM [Excel 12.0 Xml;Readonly=1;HDR=YES;IMEX=2;ACCDB=YES;DATABASE= " & Transfers2
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\nrpi.local\shared_files\ADCC\Commercial Auction Division\BA Support\BAmangment.accdb;"
con.Execute _
SQLcmd
答案 0 :(得分:1)
是的,您收到此消息是因为该文件已打开。你可以:
Kill
删除此(临时)文件AddNew
)Access表。有很多这方面的例子可以在互联网上找到。答案 1 :(得分:0)
我有一个类似的问题。奇怪的是,这是因为我要么必须在Excel文件中使用与MS Access数据库相同的字段名称,要么在SQL字符串中指定字段。与此post中提到的类似。