从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.感谢您的帮助。

+0

如果你的'SQLFrom = ...'行不结束'&dbWS&“”'?你使用过我看不到的'dsh'吗? – CLR

+0

对不起,我意外地删除了该行。我用'dsh'行编辑了代码。 –

+0

你在'Execute'之前尝试过'Debug.Print strQry'来检查任何明显的东西吗? – CLR

因此,在继续我的搜索之后,我发现了一种完美工作的不同方法。我发现它在这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”)'。我希望这有帮助。 –