Vba Shell调用适用于某些程序,但不适用于其他程序

时间:2019-11-28 12:11:58

标签: excel vba shell

Shell调用适用于我拥有的某些程序,但不适用于其他程序。我在这里打了最基本的电话,无需任何其他命令即可打开exe

Shell "C:\Program Files\qBittorrent\qbittorrent.exe", 1 'works
Shell "C:\Program Files\AmiBroker\Broker.exe", 1 'works
Shell "C:\Program Files\CTrading\QuantShare\QuantShare.exe", 1 'Run-time error '5': Invalid procedure call or argument
Shell "C:\Program Files (x86)\Equis\MetaStock\MsWin.exe", 1 'same error

除非我在这里遇到救世主,否则我就要放弃了!
系统:Windows 10 Pro版本1909 OS Build 18363.476
Microsoft Excel 2013 64位

2 个答案:

答案 0 :(得分:0)

有点丑陋的修复,但这可能会有所帮助:

Shell "cmd /c ""C:\Program Files\CTrading\QuantShare\QuantShare.exe""", 1

我没有遇到任何问题的程序,所以有点猜测。如果这样做没有帮助,则下一步是cmd /c start ...

答案 1 :(得分:0)

最后,我可以如下使用ShellExecute:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A2000")) Is Nothing Then
Set objShell = CreateObject("Shell.Application")
para = "TaskManager ChangeSymbol newsymbol:" & ActiveCell.Value
objShell.ShellExecute "C:\Program Files\CTrading\QuantShare\QuantShare.exe", para, "", "open", 1
Set objShell = Nothing
Cancel = True
End If
End Sub

我可以使ShellExecute不打开程序的新实例而是激活当前打开的实例并传递参数(类似于Shell调用吗?还如何使ShellExecute不引起焦点?我希望焦点保持在Excel