我想要一个Excel电子表格,其中包含A列中的文件路径和名称 . 运行宏时,假设应在用户的计算机上打开A1中指定的文件 . 该文件可能是.doc,.xls,.txt等....而不是我的vba需要知道应用程序的完整路径,我怎么能让vba告诉机器“请打开这个文件并使用你的应用程序与扩展相关联“?
我已经发现这可以使用完整的路径:
dblShellReturned = Shell("C:\Windows\System32\notepad.exe myfile.txt, vbNormalFocus)
我怎么能让它与以下的东西一起工作:
dblShellReturned = Shell("myfile.txt", vbNormalFocus) ' how do I get this to work
先感谢您!
4 回答
这适用于Excel和Word
或者......根据Expenzor的评论如下
CreateObject("Shell.Application").Open("C:\Nax\dud.txt")
Microsoft有一个有用的教程here .
换言之,类似下面的代码 . 但是,您可能希望将默认(工作)目录更新为文件的位置 .
VBA的Shell命令想要一个exe,所以我一直在启动explorer.exe并传入我的文件路径作为参数 . 它似乎也适用于* .lnk快捷方式和网址 .
可以使用Shell32.Shell COM object aka
Shell.Application
包装ShellExecute
Win32 API函数:Tools->References...
将Microsoft Shell Controls And Automation
类型库的引用添加到VBA项目,然后有趣的是,在这里(WinXP),当使用类型变量(提供自动完成)时,成员列表中缺少
ShellExecute
(但仍然有效) .