【问题标题】:File is Read only using VBA Excel with ADO connection to Access文件是只读的,使用带有 ADO 连接到 Access 的 VBA Excel
【发布时间】:2013-07-18 18:19:51
【问题描述】:

我正在尝试编写一个将 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

【问题讨论】:

    标签: excel vba ms-access ado


    【解决方案1】:

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

    • 将工作表复制到新工作簿,关闭并保存,传输数据,然后使用Kill 删除此(临时)文件
    • 创建一个 ADO 记录集并循环遍历工作表数据,将其 (AddNew) 插入 Access 表中。网上有很多这样的例子。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题。奇怪的是,这是因为我必须在 Excel 文件中具有与 MS Access 数据库相同的字段名称,或者在 SQL 字符串中指定字段。类似于post 中提到的内容。

      【讨论】:

        猜你喜欢
        • 2014-06-15
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-01
        • 1970-01-01
        相关资源
        最近更新 更多