谢谢狼版,基本清楚了。 下面我添加了注释的语句,也给其他朋友共享。 Sub addall() Application.ScreenUpdating = False '防止屏幕抖动,屏幕刷新禁止 Dim arr() As String, i As Long, j As Long, n As Long, temp As String, lines() As String, x As Long ReDim arr(1 To 10, 1 To 65535) temp = Dir([a1] & "\*.txt") While temp > "" '循环语句,当temp枚举完毕后退出循环 n = n + 1 ReDim Preserve arr(1 To 10, 1 To n) '重新分配数组大小 arr(1, n) = temp '数组(1,n)为文件名 On Error Resume Next '遇到错误,直接退出 Open [a1] & "\" & temp For Input As #1 '使用1#通道存储打开的文件 lines = Split(StrConv(InputB(LOF(1), #1), vbUnicode), vbCrLf) '将1号通道打开的文件,写入到lines数组中, 'lines = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf) #1写成1也是可以的 '变量 = Input(串长度,文件号) 'inputb:如果要将整个文件复制到变量,请使用InputB函数将字节从文件复制到变量。 '由于InputB函数返回一个ASCII字符串,因此,必须用StrCopy函数将ASCII字符串转换为Unicode字符串。 '代码如下:file = StrCopy (Input (LOF(filenanum),filenum),vbUnicode) 'vbCrLf ,遇上回车换行符为止 Close #1 '关闭1#通道
For j = 2 To 10 arr(j, n) = Replace(Split(lines(Cells(1, j) - 1))(0), ",", "") 'arr(j, n) = Split(lines(Cells(1, j) - 1))(0) 'Cells(1, j)假设为5 'lines(Cells(1, j)-1) lines的第5个元素(下标从0开始) 'Split(lines(Cells(1, j) - 1)) 以空格分割 'Split(lines(Cells(1, j) - 1))(0) 第1个元素 'Replace(Split(lines(Cells(1, j) - 1))(1),",","") 第2个元素去掉逗号 Next temp = Dir() Wend [a2].Resize(n, 10) = WorksheetFunction.Transpose(arr) '转置粘贴 Application.ScreenUpdating = True '允许屏幕刷新 End Sub
|