次のようにTextPadでテキストファイルを開くためのVBAユーザーフォームがあります。
Call Shell("C:\Program Files\TextPad 5\TextPad.exe " & "C:\testfile.txt", vbNormalFocus)
テキスト ファイルを特定の行番号に表示したいと考えています。
このシェル呼び出しに引数として行番号を渡す方法はありますか?
これは、WScript.Shell.SendKeys を使用して、TextPad (ctrl-G) 内で goto 行のショートカットをトリガーすることで実現できます。
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のエディタウィンドウにバインドされてしまうようです。