|
代码如下。。。
Sub test()
Dim Myr$, i%, j%, m%, n%
Dim arr, brr, Crr
Dim d As Object
Dim myname$, str$
Dim wb As Workbook
Set wb = ThisWorkbook
Myr = wb.Path & "\"
Call del
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
' myname = ThisWorkbook.Path & "\liushui.txt"
myname = Dir(Myr & "*.txt")
Do While myname <> ""
Debug.Print myname
str = ReadTxtByADODB(Myr & myname, 3)
arr = Split(str, vbLf)
m = 0
ReDim Crr(UBound(arr), 100)
For i = 0 To UBound(arr)
brr = Split(arr(i), vbTab)
For j = 0 To UBound(brr)
If Len(brr(j)) > 14 And IsNumeric(brr(j)) Then Crr(i, j) = "'" & brr(j) Else Crr(i, j) = brr(j)
Next
m = IIf(m > j, m, j)
Next
wb.Worksheets.Add after:=wb.Sheets(wb.Sheets.Count)
ActiveSheet.[a1].CurrentRegion.Resize(UBound(Crr) + 1, m) = Crr
ActiveSheet.Name = Split(myname, ".txt")(0)
myname = Dir
Loop
Beep
Application.ScreenUpdating = True
End Sub
Function ReadTxtByADODB(sPath, i)
'//自定义函数的作用:指定读取txt的编码形式为UTF-8,读取txt里面所有内容
Dim txt As String
Dim ADO As Object, myCharset As String
' If Dir(sPath) = "" Then Exit Function '如果路径是空的,直接推出
' i = 1 '指定txt编码类型是utf-8 ' GetEncoding(sPath)
If i = 3 Then
myCharset = "utf-8"
ElseIf i = 2 Then 'ElseIf i = 2 Or i = 1 Then
myCharset = "unicode"
ElseIf i = 1 Then
myCharset = "iso-8859-1"
Else
myCharset = "GB2312"
End If
Set ADO = CreateObject("adodb.stream") '创建ado对象,后面用这个对象的方法,读取txt内容
With ADO
.Charset = myCharset '编码形式
.Type = 2 '以正常文本形式返回
.Open '打开ado对象
.LoadFromFile sPath '加载txt文件
txt = .ReadText '用readtxt方法读取txt所有内容
.Close '关闭
End With
ReadTxtByADODB = txt '返回值
End Function
Sub del()
Application.DisplayAlerts = False
For Each sht In Sheets
If sht.Name <> "Sheet1" Then sht.Delete
Next
Application.DisplayAlerts = True
End Sub
|
评分
-
2
查看全部评分
-
|