申し訳ありませんが、私はプログラミングが初めてで、これについて私を助けてくれる親切な人が必要です...
以下に情報のリストがあります。vb スクリプトを使用して、IP アドレス番号の文字列だけを取得する方法を教えてください。
MAC アドレス IP アドレス名 インターフェイス フラグ
00:87:90:65:67:98 192.165.32.23 192.165.32.23 vlan.10 なし
申し訳ありませんが、私はプログラミングが初めてで、これについて私を助けてくれる親切な人が必要です...
以下に情報のリストがあります。vb スクリプトを使用して、IP アドレス番号の文字列だけを取得する方法を教えてください。
MAC アドレス IP アドレス名 インターフェイス フラグ
00:87:90:65:67:98 192.165.32.23 192.165.32.23 vlan.10 なし
まず、出力の性質を知りたいと思うかもしれません。IP アドレスの文字列を検証する方法を知る必要があります。
IP アドレスの要素は、再度テストする必要がある条件になります。
それが基本です。しかし、実際には、以下がIP アドレスの検証に使用されます:-
The first number cannot be 10.
If the first number is 172, the second number cannot be between 16 and 31 (inclusive).
If the first number is 192, the second number cannot be 168.
None of the numbers can be greater than 255.
私のサンプル コードでは、厳密な IP 検証の引数に従うのではなく、基本に従います。
VBA を使用している場合でも、Split
メソッドを使用できます。ここでスプリットのドキュメントを確認してください。
を使用する場合Split
、使用できる区切り文字があります。[az] から [0-9] から特殊文字 [,;'@] まで何でもかまいません...
オプション明示
Sub validateIP()
Dim strTrash As String
Dim varDelimited As Variant
Dim varDotDelimited As Variant
Dim i As Integer, j As Integer, trueCounter As Integer
'--in your case in between each of the IP address and other combinations, has a white space
strTrash = "00:87:90:65:67:98 192.165.32.23 192.165.32.23 vlan.10 none"
'--first delimit by white space using Split
varDelimited = Split(strTrash, " ")
'-- loop through variant array
For i = LBound(varDelimited) To UBound(varDelimited)
'--validate if delimited strings are starting and ending with a number and if string contains a dot
If IsNumeric(Left(varDelimited(i), 1)) And IsNumeric(Right(varDelimited(i), 1)) And InStr(varDelimited(i), ".") Then
'--validate for IP address type
'--delimit by dot
varDotDelimited = Split(varDelimited(i), ".")
'--validate for 4 segments : Split results in zero-indexed arrays
If UBound(varDotDelimited) = 3 Then
'--set trueCounter to zero
trueCounter = 0
'--validate each segment for a number between 0 and 255
For j = LBound(varDotDelimited) To UBound(varDotDelimited)
If IsNumeric(varDotDelimited(j)) And CInt(varDotDelimited(j)) >= 0 And CInt(varDotDelimited(j)) <= 255 Then
'--you can either save data into an array or any collection object and dump them later on to sheet
'--or simply throw a message box each time you find a valid IP address from Trash
trueCounter = trueCounter + 1
End If
Next j
If trueCounter = 4 Then
MsgBox varDelimited(i) & " is a valid IP Address"
End If
End If
End If
Next i
End Sub
検証する別の方法は、を使用することRegex
です。興味のある方は後からでも確認できます。
Sub validateIPRegex()
Dim strTrash As String
Dim objRegEx As Object
Dim matchedIPs As Object
Dim i As Integer
Dim allIPs As String
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.Global = True
objRegEx.MultiLine = False
'--this pattern doesn't consider 255. Just any 1 to 3 digit number between 0-9
objRegEx.Pattern = "(\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b)"
strTrash = "00:87:90:65:67:98 192.165.32.23 192.165.32.25 vlan.10 none"
If objRegEx.Test(strTrash) Then
Set matchedIPs = objRegEx.Execute(strTrash)
End If
If matchedIPs.Count <> 0 Then
For i = 0 To matchedIPs.Count - 1
allIPs = allIPs & " " & matchedIPs.Item(i)
Next i
End If
MsgBox allIPs
End Sub