|
本帖最后由 baofa2 于 2024-5-10 12:23 编辑
- Sub test1() '不严谨,更正一下
- Application.ScreenUpdating = False
- Dim results(1 To 50000, 1 To 50) As String, ar, br
- Dim i As Long, j As Long, k As Long, cnt As Long, col As Long, wks As Worksheet
- Dim strPath As String, strFile As String, strText As String, strName As String
- strPath = ThisWorkbook.Path & "\"
- strFile = Dir(strPath & "*.txt")
- While Len(strFile)
- k = k + 1
- strFile = Dir
- Wend
- On Error Resume Next
- strFile = Dir(strPath & "*.txt")
- While Len(strFile)
- strText = Replace(ReadFromTextFile(strPath & strFile, "UTF-8"), Chr(32), vbNullString)
- ar = Split(strText, vbLf)
- cnt = 0
- col = 0
- For i = 0 To UBound(ar)
- If Len(ar(i)) Then
- cnt = cnt + 1
- br = Split(ar(i), vbTab)
- For j = 0 To UBound(br)
- results(cnt, j + 1) = br(j)
- Next
- If j > col Then col = j '据数据这个不能少
- End If
- Next
- If k = 1 Then strName = "导入文本" Else strName = Split(strFile, ".txt")(0)
- Set wks = Worksheets(strName)
- If Err.Number Then
- Err.Clear
- Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = strName
- End If
- With Worksheets(strName)
- .Cells.Clear
- .Range("A1").Resize(cnt, col) = results
- End With
- Erase results '据数据这个不能少
- strFile = Dir
- Wend
- Set wks = Nothing
- Application.ScreenUpdating = True
- Beep
- End Sub
- Function ReadFromTextFile(ByVal strFullName As String, Optional ByVal strCharSet As String = "UTF-8") As String
- With CreateObject("ADODB.Stream")
- .Type = 2
- .Mode = 3
- .Charset = strCharSet
- .Open
- .LoadFromFile strFullName
- ReadFromTextFile = .ReadText
- .Close
- End With
- End Function
复制代码
|
评分
-
2
查看全部评分
-
|