2017-06-04 61 views
1

這是我用來打開從excel訪問數據庫的連接的代碼。它曾經工作了一年多。在VBA中設置與訪問數據庫的連接崩潰excel

Set dbname = New ADODB.Connection 
theconnection = "//xxx.sharepoint.com/sites" & Application.PathSeparator & TARGET_DB 
With dbname 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .Open theconnection 
End With 

通過試驗一個錯誤我得出結論,這條線是造成這個問題。

Set dbname= New ADODB.Connection 

的問題我的電腦 我的Excel版本2016 MSO(16.0.7726.1036)32位的自動更新後開始

請讓我知道,如果你也遇到這個問題,如果你知道任何修復或解決方法。

回答

0
  • 嘗試取消您的 'ActiveX數據對象' 引用並將它們添加回:

工具 - 參考文獻

  • 使用對象來定義數據庫:

    Dim dbname As Object 
    Set dbname = CreateObject("ADODB.Connection") 
    

如果創建連接變量是這樣的:

Dim con as New ADODB.Connection 

更改爲:

Dim con as ADODB.Connection 
Set con = New ADODB.Connection 
+0

感謝提示。問題已經解決了。當我檢查參考時,我檢查了Microsoft ActiveX數據對象6.0庫。當我沒有選中它時,它就消失了。看起來在Office 365的一些升級過程中,版本6.1發生了變化。當我檢查這個版本時,它又開始工作了。再次感謝您的幫助。 –

0

也許

Dim dbname As Object 
Set dbname = CreateObject("ADODB.Connection") 

theconnection = "//xxx.sharepoint.com/sites" & Application.PathSeparator & TARGET_DB 
With dbname 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .Open theconnection 
End With 

我以前就是這樣,所有的代碼

Dim Rs As Object 
Dim strConn As String 
Dim i As Integer 
Dim strSQL As String 

strSQL = "select * from [table] " 
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
    "Data Source=" & ThisWorkbook.FullName & ";" & _ 
     "Extended Properties=Excel 12.0;" 


Set Rs = CreateObject("ADODB.Recordset") 
Rs.Open strSQL, strConn 

If Not Rs.EOF Then 
    With Ws 
     .Range("a1").CurrentRegion.ClearContents 
     For i = 0 To Rs.Fields.Count - 1 
      .Cells(1, i + 1).Value = Rs.Fields(i).Name 
     Next 
     .Range("a" & 2).CopyFromRecordset Rs 
    End With 
End If 
Rs.Close 
Set Rs = Nothing 
+0

我試過這個,但它沒有解決問題。這是Microsoft ActiveX庫升級引起的這個問題。感謝您的幫助。 –

+0

@MarcinDramiński:我修改了我的答案,完整的代碼。 –