2016-09-20 109 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

没问题,祝你好运! –