有txt文件,打开,数据如下:
现要对其使用vba对其进行数据处理。
套路如下:
1、opentext方法打开txt文件
2、打开txt文件的方式会是excel工作簿
3、将txt文件的数据放到数组,然后处理。
代码如下:
Sub opentxt()
Dim arr
Workbooks.OpenText Filename:=ThisWorkbook.Path & '\示例数据.txt', Space:=True
arr = ActiveWorkbook.Sheets('示例数据').[a1].CurrentRegion.Value
ActiveWorkbook.Close False
Stop
End Sub
1、OpenText代码打开txt文件
Workbooks.OpenText Filename:=ThisWorkbook.Path & '\示例数据.txt', Space:=True
因为txt文件数据的分隔符是空格,也就是space,所以Space:=True,用excel打开的时候会自动将其分列。结果如下:工作表的名称和txt文件的名称一样。
2、然后将数据放进数组
arr = ActiveWorkbook.Sheets('示例数据').[a1].CurrentRegion.Value
结果如下:
3、关闭当前活动工作簿,不保存更改。
ActiveWorkbook.Close False
4、对内存中的数组arr进行处理即可。
至此结束,用opentext方法处理txt文件就是这样的套路。
现在假如要筛选txt中文件第3列不为0的数据。代码如下。
Sub opentxt()
Dim arr
Application.ScreenUpdating = False '关闭屏幕刷新
'打开txt文件
Workbooks.OpenText Filename:=ThisWorkbook.Path & '\示例数据.txt', Space:=True
'将txt文件数据放到数组
arr = ActiveWorkbook.Sheets('示例数据').[a1].CurrentRegion.Value
ActiveWorkbook.Close False '关闭活动工作簿
'处理数据
For i = 1 To UBound(arr)
If arr(i, 3) <> 0 Then
k = k 1
For j = 1 To 3
arr(k, j) = arr(i, j)
Next
End If
Next
'输出数据
With ThisWorkbook.Sheets('sheet1')
.Cells.ClearContents
.[a1].Resize(k, 3) = arr
End With
Application.ScreenUpdating = True
End Sub
结果:
https://msdn.microsoft.com/zh-cn/VBA/Excel-VBA/articles/workbooks-opentext-method-excel
联系客服