BUFFALO(バッファロー)製品ルーターを自動再起動処理

こちらは、エクセルVBAでBUFFALO(バッファロー)製品ルーターを自動で再起動する方法についての解説となります。VBAの知識がない方や自動再起動ツールをお求めの方には、無償で提供していますので「BUFFALO(バッファロー)製品ルーターの自動再起動ツール」よりダウンロードしてください。

今回は、BUFFALO(バッファロー)製品のエアステーションやルータを自動で再起動する方法について解説します。
ちなみに私がPC環境で利用している無線ルーターはBUFFALO(バッファロー)製品の「WHR-G301N」です。
こちらの製品は販売終了していますが、LAN接続ソフト「クライアントマネージャ」を操作するため基本どのルーターでも対応可能かと思います。
こちら実際どういう場合に利用するかというと人それぞれですが主にルーターの自動再起動によるIPアドレスの変更などで利用されることが多いのではないでしょうか。
IPアドレスの変更であれば、コマンドプロンプトや他の方法でもできなくはないですが、こちらではVBAのIE制御入門サイトですので、VBAでどのように制御するのかを説明していきます。まずは、処理の流れを見ていきましょう。

  • ①BUFFALO(バッファロー)製品ルーターの管理画面をIEで開く
  • ②「管理設定」をクリックする
  • ③「初期化/再起動」をクリックする
  • ④「再起動」をクリックする

となります。
※BUFFALO(バッファロー)製品のルーターに特化した処理ですので、他製品の処理で対応していません
こちらは、完成したマクロになりますので、ご確認ください。

スポンサー リンク

BUFFALO製品ルーターを自動再起動のマクロ

Sub sample()

 Call ieBasic2("192.168.1.4", "root", "")

 '管理設定をクリック
 Set objFrame = objIE.document.frames

 For i = 0 To objFrame.Length - 1

  Set objFrame2 = objFrame(i).document.frames

  For i2 = 0 To objFrame2.Length - 1

   Set objFrameDoc = objFrame2(i2).document

   For Each objTag In objFrameDoc.getElementsByTagName("a")

    If InStr(objTag.outerHTML, "管理設定") > 0 Then

     objTag.Click

     Call ieCheck(objIE)

     GoTo label01

    End If

   Next

  Next i2

 Next i

label01:

 Call frameTagClick(objIE, "a", "再起動")

 Call frameTagClick(objIE, "input", "再起動")

End Sub

実行結果

BUFFALO製品ルーターを自動再起動

それでは、1つずつ見ていきましょう。


Call ieBasic2("192.168.1.4", "root", "")

ルーター管理画面のアクセスするとBASIC認証が表示されますので「ieBasic2サブルーチン」を利用してルーターの管理画面にログインしています。
一般的なルーターのIPアドレスは「192.168.1.1」ですが、もしルーターのアドレスが分からない場合は、BUFFALOのサポートセンターへお問い合わせください。


'管理設定をクリック
Set objFrame = objIE.document.frames

For i = 0 To objFrame.Length - 1

 Set objFrame2 = objFrame(i).document.frames

 For i2 = 0 To objFrame2.Length - 1

  Set objFrameDoc = objFrame2(i2).document

  For Each objTag In objFrameDoc.getElementsByTagName("a")

   If InStr(objTag.outerHTML, "管理設定") > 0 Then

    objTag.Click

    Call ieCheck(objIE)

    GoTo label01

   End If

  Next

 Next i2

Next i

label01:

ルーターの管理画面が表示されたら、再起動画面まで移動していきます。
まず、「管理設定」をクリックする必要がありますが、非常にやっかいなサイト構成になっています。
以下は管理画面のトップページソースになります。


<frameset border="0" frameborder="0" framespacing="0" scrolling="no">
 <frame name="top" src="/cgi-bin/cgi?req=tfr&amp;tag=tag_setup" scrolling="no">
</frameset>

見て分かるようにフレームで構成されていますね。
ただし、これだけではなく、更に深いフレーム構成になっています。
1階層のフレームであれば「エクセルVBAでフレームの基本操作」のサブルーチンを利用することで簡単に処理できますが、「管理設定」をクリックするためには2階層のフレームを操作しなければなりません。
こちらの処理はその2階層の処理となります。


'管理設定をクリック
Set objFrame = objIE.document.frames

For i = 0 To objFrame.Length - 1
(省略)
Next i

こちらは、最初のフレームの数だけループ処理をしています。


Set objFrame2 = objFrame(i).document.frames

For i2 = 0 To objFrame2.Length - 1
(省略)
Next i2

こちらは、1階層のフレームから更にフレームを取得して、その数だけループ処理をしています。


Set objFrameDoc = objFrame2(i2).document

For Each objTag In objFrameDoc.getElementsByTagName("a")

 If InStr(objTag.outerHTML, "管理設定") > 0 Then

  objTag.Click

  Call ieCheck(objIE)

  GoTo label01

 End If

Next
(省略)
label01:

こちらは、タグクリック処理で同じみの形ですね。
aタグの数だけループ処理をし、「管理設定」が含まれているaタグをクリックしています。
処理が終わると「GoToステートメント」で処理を終了させています。


Call frameTagClick(objIE, "a", "再起動")
Call frameTagClick(objIE, "input", "再起動")

ここまでくれば後は処理は簡単です。
処理は1階層のフレーム内での処理ですので、「frameTagClickサブルーチン」を利用して、aタグの「再起動」をクリック後、inputタグの「再起動」をクリックして再起動されます。

今回紹介した方法は、順序立てて処理を行ってきましたが、以下の方法でも自動再起動することができます。

Sub sample()

 Call ieBasic2("http://192.168.1.4/cgi-bin/cgi?req=tfr&id=24", "root", "")

 Call frameTagClick(objIE, "input", "再起動")

End Sub

すごく、シンプルになりましたね。
これは、再起動画面のURLに直接アクセスしています。
これにより途中のクリック処理を省いています。
このようにサイトの特性と処理の目的から簡素化することが可能ですので、1つ1つ処理するよりは効率よく処理をすることができます。

次の記事: VBAのIE操作でルーター(PR-S300SE)を再起動 >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

エクセルVBAでIE制御の応用編

こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。