有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 结果: Workbooks.OpenText 方法 (Excel)参考链接:https://msdn.microsoft.com/zh-cn/VBA/Excel-VBA/articles/workbooks-opentext-method-excel |
|