从 Excel 导出到访问错误
Exporting from Excel to Access error
我正在尝试将 table 从 Excel 导出到 Access 数据库中的 table,但我一直收到错误 "Database or Object is read only"。这是问题中的代码。
dbWB = Application.ActiveWorkbook.FullName
dbWS = Application.ActiveSheet.Name
dsh = "[" & dbWS & "$]"
Set DB = CreateObject("ADODB.Connection")
dbPath = "\Corpaa.aa.com\CampusHome\IOCADHome028673\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,感谢您的帮助。
因此,在继续搜索之后,我发现了一种非常有效的不同方法。我在这个 here
上找到了它
这是我的新工作代码。感谢您的协助。
dbWB = Application.ActiveWorkbook.FullName
dbWS = Application.ActiveSheet.Name
dsh = "[" & dbWS & "$]"
Set DB = CreateObject("ADODB.Connection")
dbPath = "\Corpaa.aa.com\CampusHome\IOCADHome028673\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
Dim rs As ADODB.Recordset
Dim r As Long
Dim y As Long
y = TWB.Cells(1, 1).End(xlDown).Row
r = TWB.Cells(1, 1).End(xlToRight).Column
DB.Execute "DELETE * FROM tblNewSchedule;"
Set rs = New ADODB.Recordset
rs.Open "tblNewSchedule", DB, adOpenKeyset, adLockOptimistic, adCmdTable
For i = 2 To y
With rs
.AddNew
For j = 1 To r
fName = TWB.Cells(1, j)
fData = TWB.Cells(i, j)
.Fields(fName) = fData
Next j
End With
Next i
DB.Close
我正在尝试将 table 从 Excel 导出到 Access 数据库中的 table,但我一直收到错误 "Database or Object is read only"。这是问题中的代码。
dbWB = Application.ActiveWorkbook.FullName
dbWS = Application.ActiveSheet.Name
dsh = "[" & dbWS & "$]"
Set DB = CreateObject("ADODB.Connection")
dbPath = "\Corpaa.aa.com\CampusHome\IOCADHome028673\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,感谢您的帮助。
因此,在继续搜索之后,我发现了一种非常有效的不同方法。我在这个 here
上找到了它这是我的新工作代码。感谢您的协助。
dbWB = Application.ActiveWorkbook.FullName
dbWS = Application.ActiveSheet.Name
dsh = "[" & dbWS & "$]"
Set DB = CreateObject("ADODB.Connection")
dbPath = "\Corpaa.aa.com\CampusHome\IOCADHome028673\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
Dim rs As ADODB.Recordset
Dim r As Long
Dim y As Long
y = TWB.Cells(1, 1).End(xlDown).Row
r = TWB.Cells(1, 1).End(xlToRight).Column
DB.Execute "DELETE * FROM tblNewSchedule;"
Set rs = New ADODB.Recordset
rs.Open "tblNewSchedule", DB, adOpenKeyset, adLockOptimistic, adCmdTable
For i = 2 To y
With rs
.AddNew
For j = 1 To r
fName = TWB.Cells(1, j)
fData = TWB.Cells(i, j)
.Fields(fName) = fData
Next j
End With
Next i
DB.Close