【发布时间】:2017-06-06 00:05:39
【问题描述】:
我正在尝试将表格从 Excel 导出到 Access DB 中的表格,但我不断收到错误消息“数据库或对象是只读的”。这是qestion中的代码。
dbWB = Application.ActiveWorkbook.FullName
dbWS = Application.ActiveSheet.Name
dsh = "[" & dbWS & "$]"
Set DB = CreateObject("ADODB.Connection")
dbPath = "\\Corpaa.aa.com\CampusHome\IOCADHome02\758673\Projects\Global Analysis Tool\MX Analysis DB\Global Line MX Hub Review DB.accdb"
scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
DB.Open scn
DB.Execute "DELETE * FROM tblNewSchedule;"
SQLInsert = "INSERT INTO tblNewSchedule "
SQLSelect = "SELECT * "
SQLFrom = "FROM [Excel 8.0; HDR=YES; DATABASE= " & dbWB & "]." & dsh & " "
strQry = SQLInsert & SQLSelect & SQLFrom & ";"
DB.Execute strQry
DB.Close
DELETE qry 执行得很好,没有错误。问题是strQry 执行。我相信这是因为 WB 是只读的,但我正在运行来自 WB 的代码。我正在运行 Office 2010。感谢您的帮助。
【问题讨论】:
-
您的
SQLFrom = ...行不应该以& dbWS & " "结尾吗?你用过dsh,我看不到? -
对不起,我不小心删除了那行。我已经用
dsh行编辑了代码。 -
您是否在
Execute之前尝试过Debug.Print strQry来检查任何明显的东西? -
我没有看到任何问题。这是
Debug.Print的结果。INSERT INTO tblNewSchedule SELECT * FROM [Excel 8.0; HDR=YES; DATABASE= \\Corpaa.aa.com\CampusHome\IOCADHome02\758673\Global Line MX Analyzing Prep Tool - MMR Version 00 08-21-16.xlsm].[LastRanSchedule$]; -
是的,看起来不错。问题是,它无法从 Excel 中读取数据,还是无法将数据写入 Access?您可以尝试不带
SQLInsert部分的DB.Execute,以便它只是尝试读取/选择数据吗?如果它出错,那么至少你已经缩小了范围..?
标签: excel ms-access-2010 vba