質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

受付中

エクセル内のIPアドレスやポート、ホスト名、コマンドをVBAマクロを用いて、teratermマクロの内容に沿って出力し、 ログ収集用のteratermマクロを作成する方法

PIERROT
PIERROT

総合スコア0

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

1回答

-4評価

0クリップ

477閲覧

投稿2022/07/28 03:54

編集2022/07/29 13:54

前提

経験の浅いネットワークエンジニアです。

エクセル内の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"

<Sheet1>
イメージ説明

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

RiaFeed

2022/07/28 05:59

セルの内容を基にテキストファイル吐き出す程度ならわざわざPythonでやらなくてもVBAでよくね?って気がする
okakemetal

2022/07/28 06:14

すでにコメントついてましたね。同意です。
PIERROT

2022/07/28 06:47

>RiaFeed様、okakemetal様 コメントありがとうございます!! VBAで実施する場合、どのようなVBAマクロになりますでしょうか。 ご教示いただけますと助かります!m(__)m 尚、pythonで実施を考えた理由としては頂いたコードとエクセルがあれば、.pyを実行すれば実現可能と考えた次第でございます。VBAマクロについてあまり知識がなく複雑なものの場合、実現が難しいのではと考えてしまったことが理由でございます。(コードを張り付けて実行程度で実現が可能であればわたしでも可能かと思います。) お手数をお掛けしますがご助力いただけますと大変助かります!!m(__)m
can110

2022/07/28 07:13

https://teratail.com/help > 作業依頼のような投稿をして課題や仕事を無償でやってもらう場所ではありません。 よって、この場で望む回答を得るのはかなり難しいかと思います。
PIERROT

2022/07/28 07:32

ご指摘ありがとうございます。 自身で調べているとVBAマクロでTeratermマクロを生成し実行するようなマクロはインターネット上でも目にはするのですが、以下のような条件の参考URLがなく困っております。 ・VBAを用いてTeratermマクロを生成する。(実行はしない) ・Excel上のリスト(HOSTやIPアドレス、ポート、コマンドなど)から値を抽出して、フォーマットに即した形でアウトプットファイル(ttlファイル)を生成する。 もしVBAに詳しい方でございましたら、コードの作成ではなくとも、何かヒントとなるURLページなどがあればご教示いただけますと助かります。
novelistory

2022/07/29 04:26

>VBAマクロのコード内容をご確認いただき誤っている箇所がありましたらご教示いただけますでしょうか。 回答のスレッドに記載いただいているものがそうなのでしょうか。 質問は後から修正できますので、質問文に追記いただくと皆さま回答しやすいかと思います。
PIERROT

2022/07/29 04:54

> novelistory様 ご指摘ありがとうございます! 回答のスレッドに記載しているものが現状のコードとなります。 こちら質問文に追記させていただきました。 お手数をお掛けしますが、ご確認いただきアドバイスいただけたら幸いです。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。