将txt转换为xls

  • 本文关键字:xls 转换 txt excel vba
  • 更新时间 :
  • 英文 :


我有代码可以从txt文件中跨信息复制,并将其放在xlsm文件中,拆分一定数量的行,然后继续下一个工作表(txt文件有200多万行(。

我遇到的问题是,它不会复制前70万行,但会复制其余的行,而且在第一个工作表中,它会在其中粘贴中文。我不确定这是否与来自txt文件的信息有关。有人能指出我哪里出了问题吗?

Sub SplitTxt_01()
Const HelperFile As String = "ABCD" 
Const N As Long = 699998  
Dim myPath
myPath = "D:Test" 
Dim myFile
myFile = "20181129_EXPORT_RESULTS.txt" 
Dim WB As Workbook, myWB As Workbook
Set myWB = ThisWorkbook
Dim myWS As Worksheet
Dim t As Long, r As Long
Dim myStr
Application.ScreenUpdating = False

myFile = Dir(myPath & myFile)
Open myPath & myFile For Input As #1
t = 1
r = 1
Do While Not EOF(1)
Line Input #1, myStr
If r > N Then
t = t + 1
r = 1
End If
Open myPath & HelperFile & t & ".txt" For Append As #2
Print #2, myStr
Close #2
r = r + 1
Loop
Close #1
For i = t To 1 Step -1
Workbooks.OpenText Filename:=myPath & HelperFile & i & ".txt", DataType:=xlDelimited, Tab:=True
Set WB = ActiveWorkbook
Set Rng = ActiveSheet.UsedRange
Set myWS = myWB.Sheets.Add
myWS.Name = HelperFile & i
Rng.Copy myWS.Cells(1, 1)
WB.Close False
Next
myWB.Save
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fldr = Fso.GetFolder(myPath)
For Each Filename In Fldr.Files
If Filename Like "*" & HelperFile & "*" Then Filename.Delete
Next
Application.ScreenUpdating = True
End Sub

您将N设置为699998,则进行测试,如果r<n、 t和r都不递增。。。

因此,只有在r大于N之后,它才会开始复制行。

至少我是这么读的…

最新更新