2016-09-20 110 views
0

我們目前有Office 2010,並正在轉移到Office 2016.我有一個Excel宏,我嘗試測試。我使用下面的shell命令打開訪問並運行一個宏來將一些excel文件導入到數據庫中。這工作很好,從來沒有任何問題。使用Excel 2016將Excel文件導入Access

Shell "C:\PROGRA~1\MICROS~1\Office14\MSACCESS.EXE \\Vs300\rental_public\SHARED~1\SSDATA~2.MDB /X Upload_Manheim", vbMaximizedFocus 

當我尋找我的機器上訪問應用程序的路徑如下:

C:Program Files\Microsoft Office\Office14 

當我搜索測試機器上訪問應用程序,路徑如下:

C:Program Files (x86)\Microsoft Office\root\Office16 

我試圖修改shell命令如下:

Shell "C:\PROGRA~1\MICROS~1\root\Office16\MSACCESS.EXE \\Vs300\rental_public\OFFICE~1\SHARED~1\SSDATA~1.MDB /X Upload_Manheim", vbMaximizedFocus 

當我嘗試運行我的宏時,出現文件未找到錯誤消息。我相信shell命令的後半部分沒問題,所以我認爲問題出在shell命令的上半部分。

打開的數據庫是Access 2000數據庫。我不確定什麼是錯的。

+0

第二個命令中的MDB文件不同。這是故意的嗎? –

+1

將路徑粘貼到Windows資源管理器的導航欄中時,它們是否會將您帶到正確的文件夾? – Comintern

+1

嗯。爲什麼不使用**完整**路徑代替這些'PROGRA〜1'的東西?這不是1995年了。在64位Windows上有2個「Program Files」文件夾,而'C:\ PROGRA〜1'可能指向錯誤的文件夾。 – Andre

回答

0

而不是通過命令行,你可以留在你的Excel宏,並做同樣的事情,而不參考訪問應用程序的位置。相反,您可以從vba中創建一個新的MS Access實例,打開包含該宏的Access數據庫,然後運行該宏。 類似於:

Dim accApp As Access.Application 
Dim db As Object 

Set accApp = CreateObject("Access.Application") 
accApp.OpenCurrentDatabase "Your database location\dbName", True 

Set db = accApp.CurrentDb 
With db 
    DoCmd.RunMacro "MacroNameHere" 
End With 

Set accApp = Nothing 
Set db = Nothing 

祝你好運!

+0

不要忘記添加對Access對象模型的引用! –

+0

@ErickTripleE ..........謝謝你的建議。我結束了進入完整路徑,併爲我工作。我一定會把這個建議留在將來的發展中,謝謝你的幫助.... – Shaves

+0

沒問題,祝你好運! –