|    | 
     ▼くま さん: 
配列処理で 
Sub Testa() 
  Dim io   As Integer 
  Dim strFnm As String 
  Dim buf()  As Byte 
  Dim i    As Long 
  Dim j    As Long 
  Dim k    As Long 
  Dim x    As Long 
  Dim y    As Long 
  Dim z    As Long 
  Dim d    As Variant 
  Dim r    As Variant 
  Dim v    As Variant 
  Dim v1   As Variant 
  Dim v2   As Variant 
  Dim hd   As Variant 
   
  strFnm = "D:\excel\test9\test.log" 
  If Dir(strFnm) = "" Then Exit Sub 
  hd = Array("hostname", "vlan ID") 
  Cells.ClearContents 
  Range("A1").Resize(1, 2).Value = hd 
   
  io = FreeFile() 
  Open strFnm For Binary As io 
   ReDim buf(1 To LOF(io)) 
   Get io, , buf 
  Close io 
   
  v = Split(StrConv(buf, vbUnicode), "hostname") 
  For i = 1 To UBound(v) 
    d = Split(v(i), vbCrLf) 
    ReDim r(UBound(d), 1) 
    k = -1 
    For j = 0 To UBound(d) 
      On Error Resume Next 
      If Val(Split(d(j), "vlan ")(1)) Then 
        If Err.Number = 0 Then 
          v1 = Split(Split(d(j), "vlan ")(1), ",") 
          For x = 0 To UBound(v1) 
            v2 = Split(v1(x), "-") 
            If UBound(v2) > 0 Then 
              For z = v2(0) To v2(1) 
                k = k + 1 
                r(k, 0) = Trim(d(0)) 
                r(k, 1) = z 
              Next 
            Else 
              k = k + 1 
              r(k, 0) = Trim(d(0)) 
              r(k, 1) = Val(v1(x)) 
            End If 
          Next 
        End If 
      End If 
      On Error GoTo 0 
    Next 
    Cells(Range("A" & Rows.Count).End(xlUp).Row + 1, 1).Resize(k + 1, 2).Value = r 
  Next 
End Sub 
 | 
     
    
   |