我有一个VBA用户表单,可以在TextPad中打开一个文本文件,其中包含以下内容:
Call Shell("C:\Program Files\TextPad 5\TextPad.exe " & "C:\testfile.txt", vbNormalFocus)
我希望文本文件显示在特定的行号上。
有没有办法将行号作为参数传递给这个Shell调用?
答案 0 :(得分:2)
您可以使用WScript.Shell.SendKeys在TextPad(ctrl-G)中触发转到行快捷方式来完成此操作
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编辑器窗口。
答案 1 :(得分:1)
您也可以使用“ -n”参数调用notepad ++,以达到相同的效果
如果在执行命令时切换屏幕或出现弹出窗口,则发送键(特别是有延迟)可能是危险的事情,可能会丢失数据或在其他应用程序中无意中执行危险动作。