【发布时间】:2017-07-28 00:17:37
【问题描述】:
我正在尝试通过下面的 VBA 代码将 Excel 2013 中的值表上传到 Access 2013 数据库中。但是,我不断收到错误消息。错误发生在 cn.execute SQL 行。
运行时错误'-2147217911 (80040e09)':
无法更新。数据库或对象是只读的。
我已经检查了文件和 Access 数据库的权限,并且它是读写访问权限。我什至尝试在不同的目录中创建一个新的 Microsoft Access 数据库,但得到了同样的错误。
让我难过的另一件事是,我之前在不同的 Excel 工作表中重复使用了此代码而没有任何问题,但将其与此工作簿/数据库一起使用是行不通的。
Sub uploadToDB()
Dim SQL As String
dbPath = "C:\Users\john.smith\Desktop\database.accdb"
wbName = "C:\Macros\" & ActiveWorkbook.Name & ".xlsm"
wsname = "Staging"
TableName = "dataTable"
Set cn = CreateObject("ADODB.Connection")
scn = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & dbPath
cn.Open scn
'find number of data points to add
row = Sheets(wsname).Range("A1").End(xlDown).row
SQL = "INSERT INTO " & TableName & " ([field1],[field2],[field3],[field4],[field5],[field6],[field7],[field8]) "
SQL = SQL & "SELECT * FROM [Excel 12.0 Macro;HDR=YES;DATABASE=" & wbName & "].[" & wsname & "$A1:H" & row & "]" '" & wsName
cn.Execute SQL
cn.Close
Set cn = Nothing
End Sub
【问题讨论】: