TeraTermで常用するlinuxコマンドをExcelシートに登録しておき、必要なときにファンクションキーで実行できるようにします。
※ここでは実際に設定、動作したものを掲載していますが、内容について保証するものではありません。流用される場合は各自の責任でお願いします。
操作イメージ
1. Excelシートに使用頻度の高いlinuxコマンドを並べる。

2. コマンドボタン押下(VBA呼び出し)で、linuxコマンドをTeraTermのマクロファイル(.ttl)に出力する。
3. TeraTermのキー割り当てでファンクションキーにマクロファイルを割り当てる。
4. TeraTerm で Ctrl+F2 を押下するとマクロが読み込まれ、コマンドが連続で実行される。
# date
Wed Feb 16 17:05:15 JST 2025
# pwd
/root
# ls
anaconda-ks.cfg anaconda-post.log original-ks.cfg rpmbuild
# uname
Linux
#
5. TeraTerm で Ctrl+F3 を押下するとマクロが読み込まれ、リストで選択したコマンドが実行される。

# date
Wed Feb 16 17:13:50 JST 2025
#
TeraTermマクロを出力するためのExcelの設定
環境情報をシートに登録
実行環境に関する情報(VBAや関数で使用)をセルに定義しておく。

環境情報 | 説明 |
---|---|
commandset path | TeraTerm マクロファイル(.ttl)の出力先フォルダ。 |
teraterm path | TeraTerm 起動コマンドのパス。 |
keyassign macro | TeraTerm に最初に読み込ませるマクロのパス。ファンクションキーの割り当てを行う。 |
teraterm logpath | TeraTerm ログの出力先フォルダ。 |
wait string | TeraTerm のマクロでコマンドを連続実行させる際に、コマンドとコマンドの間に wait 命令を挟み、プロンプト出力待ちとしている。 ここでの指定文字列は wait に引き渡され、この文字列を含むプロンプトが出力されるまで次のコマンド実行は待たされる。 ちなみに、#10は行頭を意味する。 |
環境情報に名前を付ける
参照範囲(環境情報を登録したセル)に名前をつける。名前はセルアドレスの代わりに使用でき、VBAや関数の可読性が高まる。
1. メニューから、[数式] > [名前の管理]を選択し、「名前の管理」画面を表示する。

2. [新規作成]をクリックし、「新しい名前」画面を表示する。

3. 必要な項目を指定後、[OK]をクリックすると、名前が登録される。

linuxコマンドをTeraTermマクロファイル(.ttl)に出力するVBAを作成
1. Excel で ALT+F11 を押下し、VBA Editor を起動する。
※ Excelの「開発」メニューが表示されていない場合は、メニューから、[ファイル] > [オプション] > [リボンのユーザ設定]を選択し、「開発」を有効にしておく。
※ Excelファイルは「マクロ有効ブック(.xlsm)」として保存する必要がある。”.xlsx”で保存すると、VBA が保存されないため注意。
2. メニューから、[挿入] > [標準モジュール]を選択し、標準モジュール(および Module1)を追加する。

3. Module1 に「シートのlinuxコマンドを読み取り、TeraTermマクロファイルに出力する」ための Subプロシージャ(UpdateCommandSet)を追加する。(Module1 をエクスポートしたファイルを Module1.bas に掲載する。)

以下、UpdateCommandSet() の補足。(処理の詳細についてはソースコメントを参照されたい。)
UpdateCommandSet() はボタンクリックで呼び出されるように設定する。(ボタン設定についての説明は後ほど)
処理の前提として、UpdateCommandSet() を呼び出すボタンはシート上の任意のセルに配置され、ボタンの右隣には linux コマンドが並んでいるものとする。

UpdateCommandSet() の処理は、まずボタンが配置されているセルの位置を特定し、次にそのセルの右隣に登録されているlinuxコマンドの参照範囲を特定する。(コマンドの上下セルを空白とすることで参照範囲の境界としている。)
特定された参照範囲からコマンドを読み取り、TeraTermマクロファイルへ出力する。
出力するTeraTermマクロファイルは、コマンドを連続実行するためのマクロファイルとコマンドを選択実行するためのマクロファイルとする。
UpdateCommandSet() は 引数として setid(”A”~”E”)を受け取るが、この値は TeraTerm マクロファイルの名前の一部として使用される。
例えば、setid=”A” の場合、TeraTerm マクロファイル名は以下のとおりとなる。
連続実行用のマクロファイル名: commandset-seq-A.ttl
選択実行用のマクロファイル名: commandset-sel-A.ttl
今回は、コマンドセットを別々の TeraTerm マクロファイル(A~E)に保存できるように設計した。
TeraTerm 側では Ctrl+F1 で表示されるリストボックスで A~E の1つを選択させる。
選択した A~E に対応するマクロファイルを Crtl+F2(連続実行用)と Crtl+F3(選択実行用)に割り当てる。
TeraTerm ではキーボード設定ファイル(.CNF)でマクロファイルをファンクションキーに割り当てるが、
今回 .CNF ファイルは A~E 用として固定で用意している。
UpdateCommandSet() から出力されるTeraTerm用マクロ(連続実行用)の例を以下に示す。
send 'date'
wait #10'[root@'
send 'pwd'
wait #10'[root@'
send 'ls'
wait #10'[root@'
send 'uname'
wait #10'[root@'
end
send はコマンドをホストに送る。コマンド+改行を送りたい場合は sendln を使う。上記マクロでは、各コマンドの実行結果を確認しつつ次に進めることとし改行は送らないようにしている。(コマンドごとに Enter 押下が必要)
wait は 指定文字列がホストから出力されるまで待つ。
上記マクロでは date コマンドが実行されたあと、プロンプト([root@)が表示されるまで wait で待ちとなる。コマンドが終了し、ホストからプロンプトが出力されると、待ちが解除され次の命令(send ‘pwd’)へと処理が進む。(wait が待ちを解除するためのプロンプト文字列の指定については前述の「環境情報をシートに登録」を参照)
UpdateCommandSet() から出力されるTeraTerm用マクロ(選択実行用)の例を以下に示す。
strdim COM 4
COM[0] = 'date'
COM[1] = 'pwd'
COM[2] = 'ls'
COM[3] = 'uname'
listbox 'A -----' '' COM
if result != -1 then
send COM[result]
endif
end
このマクロはCOM配列にlinuxコマンドを登録し、listbox でリスト表示する。

[OK]をクリックすると、その時に選択されているコマンドの配列番号が result に返されるので send で対象コマンドをホストに送る。
linux コマンドと Sub プロシージャ(UpdateCommandSet)を呼び出すボタンの登録
1. シートに linux コマンドを登録する。(下記例では date ~ uname)
2. コマンドの左のセルにボタンを配置する。
(メニューから、[開発] > [挿入] > フォームコントロールのボタンアイコン、を選択しセルに配置)

3. ボタンのタイトルはわかりやすい文字列(例では”A”)を指定する。
(配置したボタンを右クリックし、プルダウンメニューから、[テキストの編集])
4. 同様にプルダウンメニューから、[マクロの登録]を選し、「マクロの登録」画面を表示する。
5. マクロ名に「’UpdateCommandSet “X”‘」(X には A~E を指定)を指定し、[OK]をクリック。

6. 配置したボタンをクリックし、commandset path で指定したフォルダ(例では C:\commandset\)にマクロファイル(commandset-seq-A.ttl, commandset-sel-A.ttl)が出力されていること、およびマクロファイルに linuxコマンドが登録されていることを確認する。

TeraTermのキー設定用ファイルの用意
用意するファイルは下表のとおり。TeraTerm起動時に読み込ませるマクロは、keyassign.ttl のみ。その他のファイルは、連動して読み込まれるため、所定のフォルダ(C:\commandset)に配置しておくだけでよい。
※ 表のファイルは、C:\commandset に配置するようにハードコーディングされている。別のフォルダに配置する場合は、ファイルを編集しパスを書き換える必要がある。
ファイル | 説明 |
---|---|
keyassign.ttl | TeraTermで最初に読み込むマクロ。 キーボード設定ファイル(F1.CNF)を読み込む。 |
F1.CNF | Ctrl+F1 に selectcommandset.ttl マクロファイルを割り当てる。 |
selectcommandset.ttl | オペレータに A~E を選択させるマクロ。 リストボックスで A~E を表示し、ユーザによる選択に従い、キーボード設定ファイル(F2F3[A-E].CNF)を読み込む。 |
F2F3A.CNF | Ctrl+F1 に selectcommandset.ttl、Ctrl+F2 に commandset-seq-A.ttl、Ctrl+F3 に commandset-sel-A.ttl のマクロファイルを割り当てる。 |
F2F3B.CNF | Ctrl+F1 に selectcommandset.ttl、Ctrl+F2 に commandset-seq-B.ttl、Ctrl+F3 に commandset-sel-B.ttl のマクロファイルを割り当てる。 |
F2F3C.CNF | Ctrl+F1 に selectcommandset.ttl、Ctrl+F2 に commandset-seq-C.ttl、Ctrl+F3 に commandset-sel-C.ttl のマクロファイルを割り当てる。 |
F2F3D.CNF | Ctrl+F1 に selectcommandset.ttl、Ctrl+F2 に commandset-seq-D.ttl、Ctrl+F3 に commandset-sel-D.ttl のマクロファイルを割り当てる。 |
F2F3E.CNF | Ctrl+F1 に selectcommandset.ttl、Ctrl+F2 に commandset-seq-E.ttl、Ctrl+F3 に commandset-sel-E.ttl のマクロファイルを割り当てる。 |
TeraTermを起動するためのExcelの設定
TeraTerm を手動で起動し、メニューからマクロ(keyassign.ttl)を読み込んでも問題ないが、面倒なので TeraTerm 起動と同時にマクロを読み込むコマンドシーケンスをExcelシートのセルに登録し、ボタンで起動できるようにする。ついでにログイン認証とログ出力のオプションも指定しておく。
コマンドを起動するためのVBAライブラリについて
今回、TeraTerm の起動は、VBA の IWshRuntimeLibrary.WshShell を使用して行うが、前提としてライブラリの登録が必要となる。
1. Excel で ALT+F11 を押下し、VBA Editor を開く。
2. メニューから、[ツール] > [参照設定]を選択する。
3. ”Windows Script Host Object Model” のチェックボックスにチェックを入れ、[OK]をクリックする。

TeraTerm 起動コマンドの組み立て
Excel シートに TeraTerm 起動コマンドを組み立てるための関数式を設定する。
(下記例ではボタン配置済みだが、ボタン配置については後ほど説明する。)

TeraTerm ログファイルパスと TeraTerm 起動コマンド を組み立てる関数式は以下のとおり。
<TeraTerm ログファイルパス(上図の”Log:”の右のセル)>
=tt_logpath & "node01-" & C2 & "-" & C3 & "-" & TEXT(NOW(),"yyyymmdd-hhmmss") & ".log"
<TeraTerm 起動コマンド(上図のkickボタンの右のセル)>
="""" & tt_path & """" & " /ssh " & C2 & ":" & C3 & " /auth=password /user=" & C4 & " /passwd=" & C5 & " /M=" & tt_macro & " /L=" & C6
<関数式の補足>
tt_path : 名前の管理([数式] > [名前の管理])で登録した TeraTerm 起動コマンドパスの名前
tt_logpath : 名前の管理([数式] > [名前の管理])で登録した TeraTerm ログファイルパスの名前
tt_macro : 名前の管理([数式] > [名前の管理])で登録した TeraTerm に読み込ませるマクロパスの名前
C2 : 接続先アドレスが登録されているセル(上図の”IP:”の右のセル)
C3 : 接続先ポートが登録されているセル(上図の”Port:”の右のセル)
C4 : ログインID が登録されているセル(上図の”User:”の右のセル)
C5 : ログインパスワードが登録されているセル(上図の”Password:”の右のセル)
C6 : TeraTerm ログファイルパスが登録されているセル(上図の”Log:”の右のセル)
TeraTerm 起動コマンドを実行するVBAを作成
1. Excel で ALT+F11 を押下し、VBA Editor を起動する。
2. Module1 に 「Windowsアプリを起動する」ための Subプロシージャ(RunCommand)を追加する。
(Module1 をエクスポートしたファイルを Module1.bas に掲載する。)
以下、RunCommand() の概要。
RunCommand() はボタンクリックで呼び出されるように設定する。(ボタン設定についての説明は後ほど)
処理の前提として、RunCommand() を呼び出すボタンはシート上の任意のセルに配置され、ボタンの右隣には Windowsアプリ(実行モジュール、スクリプト等)のコマンドシーケンスが登録されているものとする。
RunCommand() の処理は、まずボタンが配置されているセルの位置を特定し、次にそのセルの右隣に登録されているコマンドシーケンスを取り出す。取り出したコマンドシーケンスを IWshRuntimeLibrary.WshShell.Run に引き渡しコマンドを起動する。
Sub プロシージャ(RunCommand)を呼び出すボタンの登録
1. TeraTerm 起動コマンドの左のセルにボタンを配置する。
(メニューから、[開発] > [挿入] > フォームコントロールのボタンアイコン、を選択しセルに配置)

2. ボタンのタイトルはわかりやすい文字列(例では”kick”)を指定する。
(配置したボタンを右クリックし、プルダウンメニューから、[テキストの編集])
3. 同様にプルダウンメニューから、[マクロの登録]を選択し、「マクロの登録」画面を表示する。
4. マクロ名に「RunCommand」を指定し、[OK]をクリック。

5. 配置したボタンをクリックし、TeraTerm が起動することを確認する。
動作確認
1. TeraTerm 起動用のボタンをクリックし TeraTerm を起動。その際、自動ログインとログの出力が行われていることを確認。

2. Ctrl+F1 を押下すると表示されるリストからコマンドセット(A~E)を選択し、「OK」をクリック。
(→ Ctrl+F2 に commandset-seq-[A-E].ttl、Ctrl+F3 に commandsel-seq-[A-E].ttlのマクロファイルが割り当てられる)

3. Ctrl+F2 を押下し、コマンドを順次実行。
(→ Ctrl+F2 に割り当てられている commandset-seq-[A-E].ttl のマクロが実行され、linuxコマンド(date, pwd, ls, uname)が TeraTerm で実行される)

4. Ctrl+F3 を押下し、コマンドを選択実行。
(→ Ctrl+F3 に割り当てられている commandset-sel-[A-E].ttl のマクロが実行され、コマンドの選択リストが表示される。リストで選択したコマンド(date)が TeraTerm で実行される)


5. Ctrl+F1 で別のコマンドセットを選択。

6. Ctrl+F3 で別のコマンドセットに切り替わっていることを確認。
