从Excel导出到访问错误
问题描述:
我想从Excel中导出表格到Access数据库中的表格,但我不断收到错误“数据库或对象是只读的”。这是qestion中的代码。从Excel导出到访问错误
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的代码。我正在运行Office 2010.感谢您的帮助。
答
因此,在继续我的搜索之后,我发现了一种完美工作的不同方法。我发现它在这here
这是我的新工作代码。感谢您的帮助。
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
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
+0
对于任何人在未来寻找答案的另一个注意事项。要用这种方法在Excel中的数据库中运行查询,请使用以下代码:'DB.qryName'。这适用于在DataBase中构建和保存的查询,而不是VBA中构建的查询。你也可以直接从WB运行SQL,使用:'DB.Execute(“SQLCode”)'。我希望这有帮助。 –
如果你的'SQLFrom = ...'行不结束'&dbWS&“”'?你使用过我看不到的'dsh'吗? – CLR
对不起,我意外地删除了该行。我用'dsh'行编辑了代码。 –
你在'Execute'之前尝试过'Debug.Print strQry'来检查任何明显的东西吗? – CLR