2017-06-05 58 views
0

我想從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

回答

0

因此,在繼續我的搜索之後,我發現了一種完美工作的不同方法。我發現它在這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」)'。我希望這有幫助。 –