プロが教えるわが家の防犯対策術!

dir /a-d/s >test.txtで保存したデータから下記の情報だけエクセルに表示するためには
どうようなVBを作ればよろしいのでしょうか。

yyyy/mm/dd(A列) hh:mm(B列) ファイルサイズ(C列) ファイル名(D列)


C:\Users\AA\BBB\Local のディレクトリ

2013/04/15 22:08 36 AAAAA.jpg
2013/05/27 23:59 50,849 BBBBB.jpg
2 個のファイル 50,885 バイト

C:\Users\AA\BBB\CCCl\DD\EEE\ASD のディレクトリ

2013/04/21 21:46 70,195 123.lst
2013/04/21 21:46 163,659 10.lst
2013/04/21 21:46 123,818 Fnt10.lst
2013/05/27 23:53 3,072 Events
2013/04/21 21:55 75,803 1.bin
5 個のファイル 436,547 バイト

A 回答 (1件)

VBではなく、ExcelVBAですが、こんな感じで作ってみました。


ポイントは、Dirで作ったテキストには項目の区切りに連続した複数の空白が入るので、ワークシート関数のTrimを使って1つの空白にしてからSplit関数で分割したところです。

Sub Sample()
  Dim nFF As Integer
  Dim sLine As String
  Dim sData
  Dim nRow As Long

  nFF = FreeFile
  Open "C:\Temp\test.txt" For Input As #nFF
  nRow = 1
  Do While Not EOF(1)
    Line Input #nFF, sLine 'CSVを1行取り込む
    sLine = WorksheetFunction.Trim(sLine) 'ワークシート関数のTrimを使って連続する空白を1つにする
    sData = Split(sLine & " ", " ") 'NULLの時ように1つだけ空白を付けて空白でSplit
    '分割した1つ目が日付の場合、シートに貼り付ける
    If IsDate(sData(0)) = True Then
      Range(Cells(nRow, 1), Cells(nRow, UBound(sData))) = sData
      nRow = nRow + 1
    End If
  Loop
  Close #nFF
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!