Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何使用VBA在特定行打开和显示文本文件?_Excel_Vba_Textpad - Fatal编程技术网

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

Excel 如何使用VBA在特定行打开和显示文本文件?,excel,vba,textpad,Excel,Vba,Textpad,我有一个VBA用户表单,可以在TextPad中打开文本文件,其中包含以下内容: Call Shell("C:\Program Files\TextPad 5\TextPad.exe " & "C:\testfile.txt", vbNormalFocus) 我希望文本文件以特定行号显示 是否有方法将行号作为参数传递给此Shell调用?您可以使用WScript.Shell.SendKeys在TextPad(ctrl-G)中触发转到行快捷方式来完成此操作 为了添加或删除命令之间的延迟,您可

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

Call Shell("C:\Program Files\TextPad 5\TextPad.exe " & "C:\testfile.txt", vbNormalFocus)
我希望文本文件以特定行号显示


是否有方法将行号作为参数传递给此Shell调用?

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

为了添加或删除命令之间的延迟,您可能不得不打乱等待线,但我在Excel中的VBA模块中测试了这一点,它成功了


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

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

为了添加或删除命令之间的延迟,您可能不得不打乱等待线,但我在Excel中的VBA模块中测试了这一点,它成功了


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

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


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

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


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

哇,这太棒了!我很高兴看到这个方法比我要求的更灵活,因为它将更容易让我使用TextPad查找工具获得正确的行。哇,这太棒了!我很高兴看到这个方法比我要求的更灵活,因为它将更容易让我使用TextPad查找工具获得正确的行。
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