文件是只读使用VBA Excel与ADO连接到Access

我正在尝试编写一个将Excel数据推入Access的macros。 本来我只是写了开放Access作为一个对象,这样做,但它是非常缓慢的。 所以现在我写它来使用ADO连接。 如果我从除了我所在的文件以外的其他文件中写入数据,我可以使它工作,但是,因为这是一个function区button,只能使用我所在的文件,所以我需要它。 以下是我的代码。 我得到的错误是:

运行时错误-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 

是的,您收到此消息是因为该文件已打开。 你可以:

  • 复制工作表到一个新的工作簿,closures并保存这个,传输数据,然后删除这个(临时)使用Kill文件
  • 创build一个ADOlogging集并循环遍历工作表数据,将它插入( AddNew )Access表。 在互联网上有很多这样的例子。