在Excel宏中同时写入文件

时间:2016-06-01 11:31:45

标签: excel vba excel-vba macros

我正在准备excel宏从输入文件中读取数据并根据条件将其输出到两个不同的文件。

代码段如下

   fileName1="test1.txt"
   fileName2="test2.txt"
   file1 = FreeFile()
   file2 = FreeFile()

   Open fileName1 For Output As file1
   Open fileName2 For Output As file2

   If Condition1=true Then
       sWrite1="Write to file 1"
       print #file1,sWrite1
   Else
       sWrite2="Write to file 2"
       print #file2,sWrite2
   End If

   Close #file1
   Close #file2

预期输出为"写入文件1"应该去file1 和"写入文件2"应该是file2。

但在运行宏之后, 两者"写入文件1"和"写入文件2"被写入file2 并且file1为空。

任何人都可以帮我解决如何同时写两个文件的问题。

1 个答案:

答案 0 :(得分:3)

FreeFile()返回可用于打开的下一个文件编号。当你像你一样连续两次调用它时,它会在两种情况下都返回相同的值(可能是1),因为你还没有使用文件编号,使它仍可用于打开。

相反,您需要在再次调用FreeFile()之前使用该文件编号。

更改

file1 = FreeFile()
file2 = FreeFile()

Open fileName1 For Output As file1
Open fileName2 For Output As file2

file1 = FreeFile()
Open fileName1 For Output As file1

file2 = FreeFile()
Open fileName2 For Output As file2

它将按预期工作。