0

我有一个 VBA 用户表单,可以在 TextPad 中打开一个文本文件,其中包含以下内容:

Call Shell("C:\Program Files\TextPad 5\TextPad.exe " & "C:\testfile.txt", vbNormalFocus)

我希望文本文件显示在特定的行号处。

有没有办法将行号作为参数传递给这个 Shell 调用?

4

2 回答 2

2

您可以使用 WScript.Shell.SendKeys 在 TextPad (ctrl-G) 中触发 goto line 快捷方式来完成此操作

Dim wshshell
Set wshshell = CreateObject("WScript.Shell")

Call Shell("C:\Program Files\TextPad 5\TextPad.exe " & "C:\testfile.txt", vbNormalFocus)
Application.Wait (10)
wshshell.SendKeys "^g"      'ctrl-G
Application.Wait (10)
wshshell.SendKeys "15"      'desired line number
Application.Wait (10)
wshshell.SendKeys "{ENTER}" 'enter

您可能不得不弄乱等待行来添加或删除命令之间的延迟,但我在 Excel 中的 VBA 模块中对此进行了测试,并且它有效。

我知道可以直接从 VBA 调用的 SendKeys,但是当我尝试使用它时,它似乎绑定到了 vba 编辑器窗口。

于 2013-05-14T19:24:44.137 回答
1

您也可以使用“-n”参数调用notepad++以获得相同的效果,

如果您切换屏幕或在命令执行时出现弹出窗口,则发送密钥(特别是延迟)可能是一件危险的事情,您可能会丢失数据或无意中在其他应用程序中执行危险操作。

于 2019-04-18T19:31:25.530 回答