Excel VBA サブネットマスクをワイルドカード形式に変換するマクロです。
(例)”255.255.255.0″ → “0.0.0.255”
ワイルドカードマスクは、アクセスリストなどのネットワーク指定に使われたりします。
ワイルドカードマスクの対応表
ワイルドカードマスクは以下の表のように表記されます。
サブネットマスク | ワイルドカードマスク |
0.0.0.0 | 255.255.255.255 |
128.0.0.0 | 127.255.255.255 |
192.0.0.0 | 63.255.255.255 |
224.0.0.0 | 31.255.255.255 |
240.0.0.0 | 15.255.255.255 |
248.0.0.0 | 7.255.255.255 |
252.0.0.0 | 3.255.255.255 |
254.0.0.0 | 1.255.255.255 |
255.0.0.0 | 0.255.255.255 |
255.128.0 | 0.127.255.255 |
255.192.0.0 | 0.63.255.255 |
255.224.0.0 | 0.31.255.255 |
255.240.0.0 | 0.15.255.255 |
255.248.0.0 | 0.7.255.255 |
255.252.0.0 | 0.3.255.255 |
255.254.0.0 | 0.1.255.255 |
255.255.0.0 | 0.0.255.255 |
255.255.128.0 | 0.0.127.255 |
255.255.192.0 | 0.0.63.255 |
255.255.224.0 | 0.0.31.255 |
255.255.240.0 | 0.0.15.255 |
255.255.248.0 | 0.0.7.255 |
255.255.252.0 | 0.0.3.255 |
255.255.254.0 | 0.0.1.255 |
255.255.255.0 | 0.0.0.255 |
255.255.255.128 | 0.0.0.127 |
255.255.255.192 | 0.0.0.63 |
255.255.255.224 | 0.0.0.31 |
255.255.255.240 | 0.0.0.15 |
255.255.255.248 | 0.0.0.7 |
255.255.255.252 | 0.0.0.3 |
255.255.255.254 | 0.0.0.1 |
255.255.255.255 | 0.0.0.0 |
表を見ると、以下の規則があるのが分かります。
- サブネットマスクとワイルドカードのドット(.)で区切られた、各部分をそれぞれ足すと、255になっています。
※正しくは、もう少し別の意味があるのですが、ここではプログラムを作成する、という観点から、ワイルドカードの意味の詳細説明は省略します。
この規則をプログラムで書いていきます。
プログラム例
Function ConvertSubnetMaskWild(ByVal strSubnetMask As String) As String
Dim strIP() As String
Dim lngLen As Long ‘in_strIpMaskの文字数
Dim i As Long
Dim strSubnet As String ‘IPアドレス形式のサブネットマスク
strSubnet = “”
‘文字列を配列変換
strIP = Split(strSubnetMask, “.”)
For i = LBound(strIP) To UBound(strIP)
If strSubnet <> “” Then strSubnet = strSubnet & “.”
strSubnet = strSubnet & CStr(255 – CLng(strIP(i)))
Next
‘***戻り値を設定する
ConvertSubnetMaskWild = strSubnet
End Function
以下の部分は、サブネットマスクのドット(.)で区切った文字れ列を、配列strIP()に格納しています。
strIP = Split(strSubnetMask, “.”)
以下の部分は、配列strIP()の最小値から最大値まで順番に255から配列strIP()の値を引いて、ドット(.)で文字を結合しています。
For i = LBound(strIP) To UBound(strIP)
If strSubnet <> “” Then strSubnet = strSubnet & “.”
strSubnet = strSubnet & CStr(255 – CLng(strIP(i)))
Next
まとめ
IPアドレス形式のサブネットマスクをワイルドカード形式に変換するマクロは、まず規則性を見つけて、プログラムに書いていきました。
以上、サブネットマスクをワイルドカード形式に変換するマクロでした。