使用VBA写入TXT文件-文件被中断

时间:2019-02-19 19:10:42

标签: excel vba file-io

我有一个VBA宏,该宏在运行X13 ARIMA SEATS之前以“ datevalue”格式(即Year Tab Month Tab数据)写入txt文件。

它一直都有效,但是最近它只起作用了几次。当我查看在季节性调整之前生成的.txt文件时,该文件在一行中间被中断。从1998年到2018年7月,它会像往常一样写入文件,但会停在小数点中间。

这是编写txt datevalue文件的代码的一部分。 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

我的猜测是文件现在太长了。

更新!
我在Wend之前添加了一个MsgBox(如下所示),因此代码运行速度会变慢(在运行过程中,我一直按Enter键)并且它可以正常工作。因此,我认为它会中断文件写入,因为它花费的时间太长。

MsgBox ano & Chr(9) & mes & Chr(9) & Cells(i, col)

1 个答案:

答案 0 :(得分:0)

跟进(如果有人遇到此问题):

我认为该文件对于我的excel来说太长了,这使它有些不知所措。解决方案是在运行代码之前限制小数位数。所以我在Excel文件中放了= ROUND(xxx,2)!

希望对您有所帮助!