葛飾でひっそり暮らすIT屋の G Suite メモ

Google Apps で快適業務ライフなノウハウを伝えます

大量のIPアドレス設定用バッチファイルを一瞬で作成する [Excel VBA]

PCの管理をしていると、100台程度のPCにIPアドレスを設定しなければいけないといった場面に出くわすことがあります。

特にPCの入れ替えを一斉に行ったり、大規模な人事異動があったりといった時ですね。このごろでは Windows XP から Windows 7Windows 8 に総入れ替えをするといった動きもあちこちで見られます。

そこで今回は、Excel の IP アドレスリストから各 PC の IP アドレス設定を行うためのバッチファイルを作成する VBA を紹介したいと思います。

設定内容はIPアドレスサブネットマスク、デフォルト ゲートウェイ、優先DNS、代替DNSの5項目です。

まず、下の画像のようなリストを作成します。
Excelシート

そして、ALT キーと F11 キーを同時に押して、Visual Basic Editor を起動します。

起動後、以下のコードをコピーして貼り付けます。

Option Explicit
Sub IPConfg()
	'変数を定義します
	Dim i, CellRows As Long
	With Worksheets("IPAddress")
		'データが入力されている行数を取得します
		CellRows = .Cells(1, 1).End(xlDown).Row
		'2行目から最終行までのデータをバッチファイルに記述するループの開始
		For i = 2 To CellRows
			'1列目のコンピューター名を使用してフォルダを作成します。
			MkDir ThisWorkbook.Path & "" & _
				.Cells(i, 1)
			'バッチファイルを開きます。ファイルがない場合は作成されます
			Open ThisWorkbook.Path & "" & _
				.Cells(i, 1) & "" & .Cells(i, 1) & _
				"_IpSet.bat" For Output As #1
			'IPアドレスを設定するコマンドをバッチファイル内に書き込みます
			Print #1, "netsh interface ip set address ""ワイヤレス ネットワーク接続"" static " & _
				.Cells(i, 2) & " " & .Cells(i, 3) & " " & .Cells(i, 4) & " 1"
			'優先DNSを設定する記述です
			Print #1, "netsh interface ip set dns ""ワイヤレス ネットワーク接続"" static " & _
				.Cells(i, 5) & " primary"
			'追加のDNSを記述するコマンドです
			Print #1, "netsh interface ip add dns ""ワイヤレス ネットワーク接続"" " & _
				.Cells(i, 6)
			'ファイルを閉じる記述です。
			Close #1
		Next i
	End With
End Sub

貼付けができたらF5キーを押して実行します。

そうすると、コンピューター名でフォルダが作成され、それぞれのフォルダ内にバッチファイルが出来上がっています。

ちなみに、なぜわざわざフォルダを作ったのかというとそれには2つの理由があります。

まず一つ目は他のファイルを入れる可能性です。

PCの設定をする上で、各PC用に他にもファイルを使用する場合があります。その時のためにフォルダを作成しておこうというものです。

もう一つは、フォルダを配布するときに間違って実行することを防ぐためです。

バッチファイルをむき出しのまま作業をしていると間違って実行してしまうこともあると思います。特に多いのが、マウス操作で間違ってダブルクッリックをしてしまうことでしょうか。

そういった間違いを防ぐ上でもフォルダに格納しておく必要があると考えます。

このVBAを使うことで500個のバッチファイルを作成するのでも2秒くらいで終わるのではないでしょうか。

Windows Vista以降、IPアドレスの設定がめんどうになりました。バッチファイルで設定ができるとかなりの時間短縮になると思います。 ぜひとも試してみてください。