前提
経験の浅いネットワークエンジニアです。
エクセル内のIPアドレスやポート、ホスト名、コマンドをVBAマクロを用いて、teratermマクロの形式に沿って出力し、
ログ収集用のteratermマクロを作成したいです。
VBAマクロを用いて以下のteratermマクロのフォーマットにエクセル内の各データを変数として出力し、
teratermマクロのファイルを『HOST名_IPアドレス.ttl』のような形で必要分作成したい。
<変数(エクセルから引っ張りたいデータ)>
①HOST名=HOST名
②XXX.XXX.XXX.XXX=IPアドレス
③PP=ポート番号
④AAA=接続方式(ssh or telnet)
⑤BBB=User名
⑥CCC=パスワード
⑦コマンド*=コマンド
<teratermマクロ>
connect 'XXX.XXX.XXX.XXX:PP /AAA /2 /auth=password /user=BBB /passwd=CCC'
;connect 'XXX.XXX.XXX.XXX:PP /AAA'
getdate LOG_NAME 'HOST名_%Y%m%d_%H%M.log'
getdir LOG_PATH
strconcat LOG_PATH '\log'
foldersearch LOG_PATH
if result=0 then
foldercreate LOG_PATH
endif
strconcat LOG_PATH LOG_NAME
logopen LOG_PATH 0 1 0 0 1
waitregex '^HOST名.#'
sendln "コマンド1"
waitregex '^HOST名.#'
sendln "コマンド2"
waitregex '^HOST名.#'
sendln "コマンド3"
waitregex '^HOST名.#'
sendln "コマンド4"
VBAマクロを実行した結果、HOST1~10に対する『HOST名_IPアドレス.ttl』が作成を実現したいです。
コメントをくださったcan110様から以下のURLを参考に作成可能というお話をいただきコードを作成しています。
参考URL:https://moripro.net/vba-outlook-createmail/
もっとも、現状としてはテキストファイルが指定のフォルダに作成はできるものの、中身が記載されていない状態です。
可能であれば、VBAマクロのコード内容をご確認いただき誤っている箇所がありましたらご教示いただけますでしょうか。
お手数をお掛けしますが、何卒宜しくお願い致します。
can110様、その他有識者様
textファイルは指定のディレクトリに作成できたのですが、中身が記載されておりませんでした。
もし、何か原因等わかる場合、ご教示いただけますでしょうか。
尚、エクセル側の記載については大元の依頼文を編集しましたのでご確認いただければ幸いです。
Enum col '列番号を定義
HOST名 = 1
IPアドレス = 2
ポート番号 = 3
ユーザー名 = 4
パスワード = 5
End Enum
Sub main()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("sheet1")
Dim fileSysObj
'ファイルシステムオブジェクトの生成
Set fileSysObj = CreateObject("Scripting.FileSystemObject")
Dim textFileObj
'テキストファイルオブジェクトの生成
Set textFileObj = fileSysObj.CreateTextFile("C:\Users\XXXXXi\Desktop\test\test.txt", True)
Dim r As Long, lastRow As Long
lastRow = ws.Cells(1, 1).End(xlDown).Row
For r = 2 To lastRow
'テキストオブジェクト作成
Set fs = CreateObject("Scripting.FileSystemObject")
'テキスト本文の文字列を作成
Dim textBody As String
textBody = CreateTextBody(ws, r)
Next r
End Sub
' 機能:Excelシート上の指定行番号のテキスト本文を作成する
Function CreateTextBody(ws As Worksheet, r As Long) As String
Dim Hostname As String, IPaddress As String, Port As String, Username As String, Password As String
Hostname = ws.Cells(r, col.HOST名).Value
IPaddress = ws.Cells(r, col.IPアドレス).Value
Port = ws.Cells(r, col.ポート番号).Value
Username = ws.Cells(r, col.ユーザー名).Value
Password = ws.Cells(r, col.パスワード).Value
Dim body As String 'テキスト本文
body = Replace(body, "(HOST名)", Hostname)
body = Replace(body, "(IPアドレス)", IPaddress)
body = Replace(body, "(ポート番号)", Port)
body = Replace(body, "(ユーザー名)", Username)
body = Replace(body, "(パスワード)", Password)
CreateTextBody = body
End Function
Sub ttl作成()
End Sub
