#はじめに
最近、TeraTermの実行結果をテキストファイルに貼りつけ、エクセルに取り込むことが多いです。
地味に作業が手間ですので、エクセルVBAとTeraTermマクロを合体して自動化したメモになります。
#概要
大まかな手順は以下になります。
①エクセルVBAでTeraTermマクロ(ttlファイル)を生成する。
②TeraTermマクロでは、ログファイル出力する。
③①をWSHで実行する。
④②をVBAで開く
#実装(公開鍵方式でログインする場合の例です。)
Sub excl2ttlSample()
'パラメータ情報
'------------------------------
Dim PATH As String 'TeraTermマクロパス
Dim HOST As String 'ホスト
Dim USER As String 'ログインユーザ
Dim PASS As String 'ログインパスワード
PATH = "C:\Users\hogehoge\ttpmacro.exe" 'ttpmacro.exeのフルパスになります。適宜変更して下さい。
HOST = "aaa.bbb.ccc.ddd" 'ログインするホストのIPアドレスになります。適宜変更して下さい。AWSの場合はURLになることが多いかもしれません。
USER = "fugafuga" 'ユーザ名は適宜指定して下さい。
'ttlファイル作成
'------------------------------
Dim ttlPATH As String
Dim FN As Integer
ttlPATH = "C:\Users\hogehoge\Desktop\temp.ttl" '生成するttlファイルを指定します。こちらも適宜。
FN = FreeFile
Open ttlPATH For Output As #FN
Print #FN, "username = '" + USER + "'"
Print #FN, "keyfile = '""C:\Users\hogehoge\Desktop\AWS\fugafuga.pem""'" 'pemファイルを適宜指定します。
Print #FN, "hostname = '" + HOST + "'"
Print #FN, "msg = hostname"
Print #FN, "strconcat msg ':22 /ssh2 /auth=publickey /user='"
Print #FN, "strconcat msg username"
Print #FN, "strconcat msg ' /keyfile='"
Print #FN, "strconcat msg keyfile"
Print #FN, "connect msg"
Print #FN, "logopen 'C:\Users\hogehoge\Desktop\testlog.txt' 0 0" 'TeraTermのログファイルを適宜指定します。
Print #FN, "wait '$'"
Print #FN, "sendln 'ls'"
Print #FN, "wait '$'"
Print #FN, "logclose"
Print #FN, "end"
Close #FN
'TeraTerm実行 (WScript.Shell)
Dim wsh As Object
Dim resp As Integer
Set wsh = CreateObject("WScript.Shell")
resp = wsh.Run("""" & PATH & """""" & ttlPATH & """", 1, True)
If resp = 1 Then
MsgBox "失敗"
End If
Set wsh = Nothing
Kill ttlPATH 'ttlファイル削除
'TeraTermログファイルを開いて、MsgBoxに出力します。
Dim buf As String
Open "C:\Users\hogehoge\Desktop\testlog.txt" For Input As #1
'Do Until EOF(1)
Line Input #1, buf
MsgBox buf
'Loop
Close #1
End Sub