Записать TXT файл с VBA - Файл прерван - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть макрос VBA, который записывает TXT-файл в формате «datevalue» (то есть данные вкладки «год» на вкладке «месяц») перед запуском сидений ARIMA X13.

Это всегда работало, но в последнее время это работает только несколько раз.Когда я посмотрел на файл .txt, сгенерированный им перед сезонной корректировкой, он был прерван в середине строки.За 1998 г. до июля 2018 г. он записывает файл, как это всегда делалось, но затем останавливается в середине десятичного разряда.

Это часть кода, которая записывает файл даты в формате txt.Ano и mes (год и месяц) являются входными данными с начала кода.

Private Sub copyData(ByVal mes As Integer, ByVal ano As Integer, rng As Range)
    Dim sFileText As String
    Dim iFileNo As Integer
    Dim i, col As Double

    i = rng.Row
    col = rng.Column
    ficar = True
    iFileNo = FreeFile

    Open "P:\Macro\X12\Input\serie1.txt" For Output As #iFileNo

    'Writes the file with the time series
    While Cells(i, col) <> ""
        Print #iFileNo, ano & Chr(9) & mes & Chr(9) & Cells(i, col)
        If (mes + 1) Mod 12 > 0 Then mes = (mes + 1) Mod 12 Else mes = 12
        If mes = 1 Then ano = ano + 1
        i = i + 1
    Wend

    Close #iFileNo

End Sub

Это заголовок .txt файла

1998    1   4641.272855
1998    2   3943.235604
1998    3   5167.087047
1998    4   4629.068494
1998    5   4736.139222
1998    6   4703.891762
1998    7   5394.787069
1998    8   4155.992635
1998    9   5741.168184
1998    10  5460.08048

Это хвост, где он перестает работать.

2018    4   13790.364479
2018    5   13259.844355
2018    6   14320.106493
2018    7   16101.08

Я предполагаю, что файл теперь слишком длинный.

ОБНОВЛЕНИЕ !!
Я добавил MsgBox перед Wend (как показано ниже), чтобы код работал медленнее (Iпродолжайте нажимать ввод как он работает) и это сработало.Поэтому я думаю, что это нарушает запись файлов, потому что это занимает слишком много времени.

MsgBox ano & Chr(9) & mes & Chr(9) & Cells(i, col)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...