У меня есть макрос 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)