Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13836 / 76733 ←次へ | 前へ→

【68399】Re:テキストデータから数値をもってきて表を作りたい
発言  kanabun  - 11/3/2(水) 21:12 -

引用なし
パスワード
   さきほどのコード 出力先を(イミディエイト・ウィンドウから)
シート(ActiveSheet)に変更してみました。
他は変更なしです。

Sub Try4_MultiFile()
  Const myPath = "C:\マクロ"
  Dim io As Integer
  Dim myLogFile As String
  Dim buf() As Byte
  Dim ss() As String, s As String, Series, num As Long
  Dim hostname As String, ok As Boolean
  Dim i As Long, j As Long
  Dim vout() As String
  Dim L As Long, Lmax As Long: Lmax = 500
  ReDim vout(1 To 2, Lmax)
  vout(1, 0) = "hostname": vout(2, 0) = "vlan ID"
  
  Dim rex As RegExp
  Dim mm As Match
  Set rex = New RegExp
  rex.Pattern = "[\d-]+"
  rex.Global = True
  
  ChDrive myPath
  ChDir myPath
  myLogFile = Dir("*.log", vbNormal)
  
  Do While Len(myLogFile) > 0
    '------------ ファイルを読み込む
    io = FreeFile()
    Open myLogFile For Binary As io
     ReDim buf(1 To LOF(io))
     Get io, , buf
    Close io
    ss = Split(StrConv(buf, vbUnicode), vbCrLf)
 
    '------------  抽出
    For i = 0 To UBound(ss) - 1
     If Not ok Then
       If ss(i) Like "hostname*" Then
         hostname = Split(ss(i))(1)
         ok = True
       End If
     ElseIf ss(i) Like "vlan*" Then
       If Mid$(ss(i), 6, 1) Like "#" Then
        For Each mm In rex.Execute(ss(i))
          s = mm.Value
          If s <> "-" Then
            Series = Split(s, "-")
            num = Series(0)
            For j = num To Val(Series(UBound(Series)))
              L = L + 1
              If L > Lmax Then
                Lmax = Lmax + 500
                ReDim Preserve vout(1 To 2, Lmax)
              End If
              vout(1, L) = hostname
              vout(2, L) = j
            Next
          End If
        Next
       End If
     End If
    Next
    ok = False  '◆ファイル読みが終了したらok=Falseに戻す
    '-------------- 次のログファイル
    myLogFile = Dir$()
  Loop
  
  '-------------------- シートに書き出す
  If L > 0 Then
    With ActiveSheet
      .UsedRange.ClearContents
      .Range("A1").Resize(L, 2).Value = _
       Application.Transpose(vout)
    End With
    Beep
  End If
End Sub

2 hits

【67107】テキストデータから数値をもってきて表を作りたい くま 10/11/4(木) 16:00 質問
【67108】Re:テキストデータから数値をもってきて表... kanabun 10/11/4(木) 16:39 発言
【67109】Re:テキストデータから数値をもってきて表... kanabun 10/11/4(木) 16:56 発言
【67110】Re:テキストデータから数値をもってきて表... kanabun 10/11/4(木) 17:24 発言
【67115】Re:テキストデータから数値をもってきて表... くま 10/11/5(金) 9:42 質問
【67116】Re:テキストデータから数値をもってきて表... kanabun 10/11/5(金) 10:51 発言
【67117】Re:テキストデータから数値をもってきて表... kanabun 10/11/5(金) 11:04 発言
【68394】Re:テキストデータから数値をもってきて表... くま 11/3/2(水) 16:56 質問
【68397】Re:テキストデータから数値をもってきて表... kanabun 11/3/2(水) 20:44 発言
【68398】Re:テキストデータから数値をもってきて表... kanabun 11/3/2(水) 20:47 回答
【68399】Re:テキストデータから数値をもってきて表... kanabun 11/3/2(水) 21:12 発言
【68401】Re:テキストデータから数値をもってきて表... kanabun 11/3/2(水) 21:30 回答
【67118】Re:テキストデータから数値をもってきて表... Yuki 10/11/5(金) 11:54 発言

13836 / 76733 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free