从 Excel 单元格执行 Shell 命令

从 Excel 单元格执行 Shell 命令

我有一个 shell 命令,用来执行带有附加参数的程序。

Shell "C:\Program Files\uvnc bvba\UltraVnc\vncviewer" & " " & Range("$G3")

单元格 G3 包含我希望用来启动程序的 IP 地址。

我没有问题从命令按钮启动命令,但我希望做的是使用超链接单元格中的参数启动程序,使用:

= HYPERLINK("C:\Program Files\uvnc bvba\UltraVnc\vncviewer" & " " & Range("$G3"))

但是超链接无法打开带有可选参数的程序。

我可以用可选参数通过超链接打开该程序吗?

答案1

使用 VBA 解决了这个问题:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("range here")) Is Nothing Then
   Call Shell("program location" & " " & Target)
Else

现在我双击工作表中包含 IP 的单元格,它将使用该 IP 运行我的程序。

答案2

Excel 超链接非常适合打开网页、PDF 文件或其他与 Microsoft Office 兼容的文件。但是,使用超链接打开 EXE、BAT、CMD、VBS 等命令文件时会出现一些问题。例如:

• 必须协商带有“确定”/“取消”按钮的警告对话框。

• 添加命令行参数不方便,尤其是当它们依赖于其他单元格时。

• 命令文件的路径可能难以指定,尤其是在移动 Excel 文件时。

• 指定命令文件的快捷方式时,必须包含其类型 (.LNK)。

• 打开诸如CMD或VBS等较长或复杂的脚本文件时,shell窗口将会闪烁。

这里描述的技术解决了这些问题,而不会影响标准 Excel 超链接:http://blog.contextures.com/archives/2017/09/14/excel-hyperlinks-run-command-files/

此解决方案将类似于 RUN::COMMAND 的文本添加到超链接的单元格,然后使用添加到工作表的 FollowHyperlink 事件代码的 VBA 处理该文本。例如,如果超链接的单元格显示

This cell is a hyperlink to RUN::"Notepad.exe" "SomeFilePath.BAS"

然后指定的 BAS 文件将在记事本中打开。

相关内容