6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

エクセルマクロとTeraTermマクロの連携

Last updated at Posted at 2020-11-22

#はじめに
最近、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
6
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?