0

txt ファイルを 1 つのセルにインポートする VBA コードがあります。コードは次のとおりです (それほど重要ではありません)。

Sub ReadFile()
     ' Requires a reference to Microsoft Scripting Runtime (Tools > References)
    Dim FSO As FileSystemObject
    Dim FSOFile As File
    Dim FSOStream As TextStream

    Dim Rand
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")

   Set FSO = New FileSystemObject
   Set FSOFile = FSO.GetFile("C:\Users\sdagfsgedg\Desktop\20121122.log")
   Set FSOStream = FSOFile.OpenAsTextStream(ForReading, TristateUseDefault)
   Rand = 1
   Do While Not FSOStream.AtEndOfStream
        ws.Cells(Rand, 1).Value = FSOStream.ReadAll
   Loop
End Sub

テキスト ファイル 20121122.log には約 20.000 行あり、すべて 1 つのセルにインポートされます。そのセルを 20.000 セルに分割するにはどうすればよいですか (ログに 20.000 行がある場合)。テキスト ファイルを 1 行ずつ読みたくない... すべてを読み込んでから (はるかに高速です)、すべての行を別の行に分割します。

LATER EDIT:または、ログファイルを読み取り、テキストを行ごとに貼り付ける別の解決策がある場合(現在のように1つのセルにすべてではありません)

4

1 に答える 1

2

//コードはテストされていません

Sub ReadFile()
  Dim FSO As FileSystemObject
  Dim FSOFile As File
  Dim FSOStream As TextStream

  Dim Rand
  Dim row
  Dim ws As Worksheet
  Set ws = Worksheets("Sheet1")

  Set FSO = New FileSystemObject
  Set FSOFile = FSO.GetFile("C:\Users\sdagfsgedg\Desktop\20121122.log")
  Set FSOStream = FSOFile.OpenAsTextStream(ForReading, TristateUseDefault)
  Rand = 1
  Dim content As String
  Dim lines As Variant
  Dim intIndex As Integer

  content = FSOStream.ReadAll
  lines = split(content, Chr(10))

  For intIndex = LBound(lines) To UBound(lines)
    ws.Cells(Rand, 1).Value = lines(intIndex)
    Rand = Rand + 1
  Next

End Sub
于 2012-11-29T14:21:47.637 に答える