将txt文件导入excel,并将文本设置为列格式
我试图通过VBA代码将.txt文件导入Excel,然后使用“文本到列”命令格式化内容 txt文件包含以下内容:将txt文件导入excel,并将文本设置为列格式,excel,text,file-conversion,vba,Excel,Text,File Conversion,Vba,我试图通过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, my
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文件中获取所有数据,并将每个项分隔成一个数组
我想将数组中的项目放入excel的列中,从范围(“A5”)开始,并对每一新行进行说明
帮忙
(编辑:我想在任何时候选择空数组时向下移动一行,但每行中都有许多空格,这不起作用。而且,行的长度根据内容的不同而不一致。)您需要以两种方式拆分数据:使用换行符将数据拆分为行,然后使用
将数据拆分为单元格。
请注意,文本文件中的换行符可能不是vbNewLine
。如果这段代码没有分成几行,那就是第一个要查看的地方
若要将您的代码完成为Posed,请尝试
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文件视为文本
你把文本文件作为二进制文件处理有什么特别的原因吗?没有原因,除了天真地尝试一些东西
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