2016-06-22 124 views
0

我想通过VBA将文本文件导入到Excel中,但经过大量搜索和测试后,我似乎无法弄清楚如何格式化它,因为我想要。从文本文件导入特定文本到excel表

这里的文本文件的一部分:

^USER ADDRESS 
User's name 
Street address 
Postal code and town 
^USER ORDER NUMBER 
Order number 
^AND SO ON..... 

导入时,我希望它格式化这样的:

^USER ADDRESS | User's name | Street address | Postal code and town 
^USER ORDER NUMBER | Order number 
^AND SO ON .... 

这是我的脚本这么远。它复制包含^ USER的行并将其粘贴 - 但我需要它复制每个^下面的行,直到下一个^。

Private Sub DatafrmTxt() 

Dim myFile As String, text As String 
Dim F As Long 
Dim x As Integer 

myFile = "C:\test.txt" 

F = FreeFile 
x = 1 

Open myFile For Input As F 
Do Until EOF(F) 
Line Input #F, text 

If InStr(text, "^USER ") > 0 Then 
Range("A" & x).Value = text 
x = x + 1 
End If 
Loop 
Close F 

End Sub 

回答

1

这应该做的工作。当您的.txt文件的下一行是不是一个“头”,然后在相邻列粘贴到x

Private Sub DatafrmTxt() 

Dim myFile As String, text As String 
Dim F As Long 
Dim x As Integer, col As Integer 

myFile = "C:\test.txt" 

F = FreeFile 
x = 1 

Open myFile For Input As F 
Do Until EOF(F) 
Line Input #F, text 

    If InStr(text, "^USER ") > 0 Then 
     Range("A" & x).Value = text 
     x = x + 1 
     col = 2 
    Else 
     Cells(x, col).Value = text 
     col = col + 1 
    End If 

Loop 

End Sub 
1

这样的事情也许会有帮助,我没有得到正确的文件,所以试了一下使用HTML标记的HTML,它可能需要一些调整。它使用脚本运行时参考

Sub TestTextStream() 

Dim f As Scripting.FileSystemObject 
Dim t As Scripting.TextStream 
Dim lngRow As Long 
Dim intXshift As Integer 

Set f = New Scripting.FileSystemObject 

Set t = f.OpenTextFile("c:\test\JavascriptAccordian.txt", ForReading) 

lngRow = 1 

While Not t.AtEndOfStream 

    If Left(t.ReadLine, 1) = "^" Then 
     intXshift = 0 
     lngRow = lngRow + 1 
     Range("a" & lngRow).value = t.ReadLine 
    Else 
     Range("b" & lngRow).Offset(0, intXshift).value = t.ReadLine 
     intXshift = intXshift + 1 
    End If 

Wend 

Set t = Nothing 
Set f = Nothing 

End Sub