2013-06-27 36 views
2

我想從我當前的數據庫中使用VBA打開另一個數據庫,然後關閉我所在的那個數據庫。當我使用這裏列出的代碼時,它會打開Access,但會立即關閉它。我確信這只是我忽略的一些東西,但過去一小時我已經摺磨了我的大腦。任何幫助將不勝感激。用VBA打開一個新的數據庫

Private Sub Command115_Click() 
Dim objAccess As Access.Application 

Const conPATH = "C:\Users\user\Desktop\Database1.accdb" 

'Create an instance of the Access application object. 
Set objAccess = CreateObject("Access.Application") 

'Open the database 
objAccess.Visible = True 
objAccess.OpenCurrentDatabase conPATH 

'Open the form. 
objAccess.DoCmd.OpenForm "Main-Form" 

' Maximize other Access window 
objAccess.DoCmd.RunCommand acCmdAppMaximize 
End Sub 

預先感謝任何幫助在這件事

+0

嘗試將您的Access對象添加到模塊中的公共集合中嗎? – dennythecoder

+0

我把代碼放在一個模塊中作爲一個公共函數,然後用相同的結果調用它。這是你的意思嗎?或者我誤解了? – Chuck

回答

3

如果您使用的shell,然後當你關閉你的第一個數據庫,第二個將繼續開放。

我猜你的代碼沒有工作的原因是因爲,你開始第二次訪問是第一個中存在的對象。第一個關閉並清理其對象/變量的時刻。它關閉了第二個。

+1

這是訪問命令行開關的鏈接。當您打開accdb/mdbs時,您可能會發現它們很有用。 http://office.microsoft.com/en-ca/access-help/command-line-switches-for-access-HA010166605.aspx – ashareef

+1

完美!剛剛添加了vbMaximized焦點,併爲此收尾。非常感謝! – Chuck

0

說你的第一個應用程序是access1,它試圖打開access2,然後關閉access1應用程序,並使access2成爲活動應用程序。你可以做的一件事是, 一旦你的access1應用程序加載試圖以編程方式打開access2應用程序,並使其可見,然後使用Application.closeCurrentDatabase關閉Access1數據庫,然後在access1應用程序窗體的卸載事件(如果有任何形式access1 app)調用Application.Quit。

This Works。