Конвертировать TXT в XLS - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть код для копирования всей информации из txt-файла и размещения его в xlsm-файле, разделяя его на определенное количество строк, а затем продолжая на следующем листе (txt-файл содержит более 2 миллионов строк).

У меня проблема в том, что он не копирует первые 700 000 строк, но копирует остальные, также на первом листе он вставляет туда китайский. Я не уверен, имеет ли это какое-то отношение к информации, поступающей из 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

1 Ответ

0 голосов
/ 11 декабря 2018

Вы установили N равным 699998, затем проведите тест, который, если r

Таким образом, только после того, как r больше, чем N, он начнет копировать строки.

По крайней мере, так я это читаю ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...