#したいこと
ルータのサブインタフェースを100個作りたいなど、ネットワーク機器などのconfig作成において繰り返しが必要な作業を自動で行うExcelVBAマクロを作ってみた。
##機能
・サブインタフェースなどの繰り返しconfigを作成可能。
・サブインタフェースの番号やVLANIDはインタフェースの数字をインクリメント可能
・インクリメントする値の初期値はconfig行毎で変えることも可能(サブインタフェースが1~でVLANIDが1001~など。)
・speed設定やno shutdownなどの共通configについてはそのままコピーする。
シートはパラメータなどを入れるパラメータシートと生成されるconfigを吐き出す出力シートの2シートを作成した。
B行に繰り返したいconfigを書き、インクリメントしたい部分を$に置換する。インクリメントする値の初期値をC行に記入する。
E3セルに何ループさせるかを記入する。
##マクロ
短くシンプルにをモットーにガーっと書いてみた。
もうちょっときれいにしたい。
Sub configcreate()
Dim LOOPNUM As Integer
Dim CMDLINE As String
Dim INITVALUE As String
Dim NUMLINE As Integer
Dim OUTPUTCELL As Integer
Worksheets("出力シート").Columns("A:A").EntireRow.Clear '出力シートのA行をクリア
LASTROW = Worksheets("パラメータ").Cells(Rows.Count, 2).End(xlUp).Row
NUMLINE = LASTROW - 2
LOOPNUM = Worksheets("パラメータ").Cells(3, 5)
'NUMLINE = Worksheets("パラメータ").Cells(6, 5) '行数を手打ちする場合はここで指定していた。現在は自動取得
OUTPUTCELL = 1 '出力1行目の行番号
For i = 1 To LOOPNUM 'ループ回数のfor
For j = 1 To NUMLINE '行数のfor
CMDLINE = Worksheets("パラメータ").Cells(2 + j, 2).Value
If InStr(CMDLINE, "$") > 0 Then
INITVALUE = Worksheets("パラメータ").Cells(2 + j, 3).Value
If i >= 2 Then
k = i - 1
INITVALUE = INITVALUE + k
Else
End If
CMDLINE = Replace(CMDLINE, "$", INITVALUE)
Else
End If
Worksheets("出力シート").Cells(OUTPUTCELL, 1).Value = CMDLINE
OUTPUTCELL = OUTPUTCELL + 1
Next
Next
End Sub
##マクロ実行結果
上記シート構成の画像のパラメータで回してみた。
想定通りの結果が出ているし、手作業で数時間かかる作業が1秒程度でできてしまった。
##今後の課題
繰り返しだけでなく、config全般を自動生成するマクロを作りたい。