将txt文件导入到excel中,并将文本格式化为列

我试图通过VBA代码导入一个.txt文件到Excel中,然后用文本到列命令格式化内容。

txt文件包含以下内容:

DATE | 1 | 2 | 3 | 4 | Something ||||| Not Sure ||||| DATE | 5 | 6 | 7 | 8 | New ||||| Whatever ||||| 

目前,使用我发现和抨击的代码,我已经设法得到这一点

 Sub Sample() Dim MyData As String, strData() As String, myFile As String myFile = Application.GetOpenFilename() Open myFile For Binary As #1 MyData = Space$(LOF(1)) Get #1, , MyData Close #1 strData() = Split(MyData, "|") End Sub 

这只是从txt文件获取所有数据,并将每个项目分隔成一个数组。

我想把数组中的项目放入从Range(“A5”)开始的excel的列中,并为每个新行记帐。

帮帮我?

(编辑:我想到任何时候,我得到一个空的数组select,但每行内有许多空白,这是行不通的,而且,行的长度是不一致的,取决于内容。

你需要用两种方法分解数据:使用NewLine字符,然后到使用|单元格中

请注意,文本文件中的vbNewLine可能不是vbNewLine 。 如果这段代码没有分割成几行,这就是第一个看到的地方。

要完成您的代码作为poseted,请尝试

 Sub Sample() Dim MyData As String Dim lineData() As String, strData() As String, myFile As String Dim i As Long, rng As Range ' lets make it a little bit easier for the user myFile = Application.GetOpenFilename("Text Files (*.txt), *.txt") Open myFile For Binary As #1 MyData = Space$(LOF(1)) Get #1, , MyData Close #1 ' Split into wholes line lineData() = Split(MyData, vbNewLine) Set rng = Range("A5") ' For each line For i = 0 To UBound(lineData) ' Split the line strData = Split(lineData(i), "|") ' Write to the sheet rng.Offset(i, 0).Resize(1, UBound(strData) + 1) = strData Next End Sub 

作为替代方法,将.txt文件当作Text来处理

 Sub Sample() Dim fn As Integer Dim MyData As String Dim lineData As String, strData() As String, myFile As String Dim i As Long, rng As Range myFile = Application.GetOpenFilename("Text Files (*.txt), *.txt") Set rng = Range("A5") ' Lets not rely on Magic Numbers fn = FreeFile Open myFile For Input As #fn i = 1 Do While Not EOF(fn) Line Input #fn, lineData strData = Split(lineData, "|") rng.Cells(i, 1).Resize(1, UBound(strData) + 1) = strData i = i + 1 Loop Close #fn End Sub