如何使用VBA在特定行打开和显示文本文件?

时间:2013-05-14 17:01:11

标签: excel vba textpad

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

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

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

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

2 个答案:

答案 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 ++,以达到相同的效果

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