2013-05-01 221 views
6

編輯:這個問題的答案可以在接受的答案的評論中找到。從Excel中打開Access VBA

我試圖打開Access數據庫從我的Excel文件中的按鈕單擊。我目前有這樣的代碼:

Private Sub bttnToAccess_Click() 

Dim db As Access.Application 

Set db = New Access.Application 
db.Application.Visible = True 
db.OpenCurrentDatabase "C:\Users\wcarrico\Desktop\wcarrico-CapstoneFinalSubmission.accdb" 

End Sub 

這看起來很簡單,然後Access幾乎立即關閉。如果它很重要,Access文件具有一個AutoExec宏,它在打開時通過一些測試運行。

+0

你試圖運行Access GUI Excel內部,或只是想連接到數據庫和查詢裏面的數據? – 2013-05-01 03:39:15

+0

我只是簡單地爲用戶提供對數據庫的訪問。我是VBA的EXTREMElY新手,甚至不知道Acess GUI是什麼。數據庫基本上是一個計劃婚禮的獨立工具。 excel和訪問文件最終將通過導入鏈接。 – 2013-05-01 03:48:17

回答

6

然後不要嘗試打開Access應用程序;只需使用其中一種數據訪問技術創建連接對象: - OLE-DB或 - ODBC。

谷歌「ODBC連接字符串」或「OLE-DB連接字符串」根據您的特定配置(和Access文件類型)獲取詳細信息。

ADODB可能是目前最容易使用的數據庫。

更新: 然後嘗試使用數據從Access導入數據 - >從訪問嚮導。 Yu始終可以使用宏記錄工具爲您自動生成一些VBA代碼,這將爲您創建一些基礎架構;在探索VBA對象模型的新部分時,我經常使用它。

更新 - 問題最終解決,從下面的評論
這可能是因爲該變量超出範圍;將db以外的函數聲明移至模塊級別

+0

我很快瀏覽了Google上的一些結果,不知道有什麼在談論或從哪裏去。這個項目是爲了在學校介紹VBA課程,所以我剛開始學習。 另外,我認爲我上面有關導入的評論可能會混淆我的意圖。我爲婚禮策劃設計了一個數據庫,用於管理客人名單,供應商和其他一些事情。我正在處理的excel文件現在更多地處理婚禮的財務方面(建模,最小最大主要是計算等)。我真的只是想打開訪問文件,沒有別的。 – 2013-05-01 04:03:55

+0

如果OP是VBA的新手,就像他說的那樣,導航記錄集可能有點難以咀嚼。 – ApplePie 2013-05-01 04:20:14

+1

@ AlexandreP.Levasseur:取點;發佈更新。 – 2013-05-01 04:33:11

1

代碼通過創建分配給對象變量的應用程序實例啓動Access。在過程結束時,變量超出了範圍,因此Access關閉。

您接受了爲Access應用程序實例使用模塊級變量的答案。在這種情況下,Access在程序結束後仍然運行。但是,如果用戶退出Excel,Access也將關閉。

如果目標是啓動Access並保持運行狀態,直到用戶決定關閉它,只需直接啓動Access而無需將應用程序實例分配給對象變量(Set db = New Access.Application)。如果您的Excel代碼需要它用於其他目的,那麼db變量將很有用。但是,它實際上只用於打開數據庫文件。

您可以使用Run方法WScript.Shell在Access會話中打開您的數據庫文件。

Private Sub bttnToAccess_Click() 
    Const cstrDbFile As String = "C:\Users\wcarrico\Desktop\wcarrico-CapstoneFinalSubmission.accdb" 
    Dim objShell As Object 
    Set objShell = CreateObject("WScript.Shell") 
    objShell.Run cstrDbFile 
    Set objShell = Nothing 
End Sub 
+0

我試過這個方法,它給出了一個運行時錯誤「Method'Run'Object'IWshShell3'failed ... – SandPiper 2016-09-13 12:50:15

0

我知道這是一個古老的線程,但如果你試圖打開Access數據庫,你會得到在Excel VBA這個錯誤,但你沒有兩個具體參考點擊。 (工具,VBA編輯器屏幕上的參考)。您需要單擊「Microsoft Access 15.0對象庫」和「Microsoft ActiveX數據對象6.1庫」。

0

取出New聲明,然後它工作