0

Excel にインポートしたいテキスト ファイルがいくつかあります。マクロでファイルを開きたいのですが、'PRICE' という単語に遭遇すると、その行が A1 に配置されます。その後の各行は b1、c1 などに配置されます。PRICE という単語が再び見つかると、新しい行が開始され、その行が a2 に配置され、続いて b2、c2 などの行が配置されます。Instr を使用する必要があると思います。以下のコードは、PRiCE を含む行を新しい行に配置しているように見えますが、テキスト ファイルの次の行は続いていないようです。DO while not loop 内で微調整が必​​要だと思います。

x = 1 'to offset rows for each file

' Loop thru all files in the folder
For Each file In folder.Files

' set the starting point to write the data to
Set cl = ActiveSheet.Cells(x, 1)

' Open the file
Set FileText = file.OpenAsTextStream(ForReading)



i = 0 'to offset columsn for each line
' Read the file one line at a time
Do While Not FileText.AtEndOfStream

    TextLine = FileText.ReadLine 'read line

    If InStr(TextLine, "FINEX") > 0 Then 'find text

    x = x + 1
    Set cl = ActiveSheet.Cells(x, 1)
    cl.Offset(, 0).Value = TextLine
    'i = i + 1
    'cl.Value = TextLine

    'MsgBox ("yes")
    Else
     cl.Offset(, i).Value = TextLine 'fill cell
    i = i + 1
    End If
Loop

' Clean up
FileText.Close

x = x + 1

Next file
4

2 に答える 2

1

私は昨日このコードであなたを助けたので、たまたま見たので、私は刺すと思いました:

以下のコードでそれが得られるかどうかを確認してください。そうでない場合は、お知らせください。微調整できます。

    x = 1 'to offset rows for each file and at price

' Loop thru all files in the folder
For Each file In folder.Files

    ' set the starting point to write the data to
    Set cl = ActiveSheet.Cells(x, 1)

    ' Open the file
    Set FileText = file.OpenAsTextStream(ForReading)

    i = 1 'to offset columsn for each line

    ' Read the file one line at a time
    Do While Not FileText.AtEndOfStream

        TextLine = FileText.ReadLine 'read line

        If InStr(TextLine, "PRICE") > 0 Then 'find text

            cl.Offset(x - 1, 0).Value = TextLine
            x = x + 1

        Else

            cl.Offset(x - 1, i).Value = TextLine 'fill cell
            i = i + 1

        End If

    Loop

Next
于 2012-10-26T16:24:26.023 に答える
0

私の2セント

Dim f As File, fileStream As TextStream, filetext As String, NewLines() As String, Offset As Long

Offset = 1

Set fileStream = f.OpenAsTextStream(ForReading)
filetext = fileStream.ReadAll

filetext = Replace(filetext, vbCrLf, " ") 'make everything one line
NewLines = Split(filetext, "PRICE") 'make a new set of lines based on PRICE

For l = LBound(NewLines) To UBound(NewLines)

    ActiveSheet.Cells(l + Offset, 1) = NewLines(l)
Next l

fileStream.Close
Set fileStream = Nothing
于 2012-10-29T16:02:58.447 に答える