带有中文字符的Excel VBA TextStream.writeline

时间:2012-07-27 23:47:43

标签: excel vba filesystemobject

我对VBA相当陌生,并且很难解决如何解决"运行时错误' 5':无效的程序调用或参数"执行此代码时收到的错误。有问题的单元格有中文字符,代码似乎在英文字母表上工作正常。流输出到文本文件。 (将来应该是一个xml文件,但我仍然没有实现所有正确的格式化)

Dim fso As New FileSystemObject, stream As TextStream    
Set stream = fso.createTextFile("C:\Users\username\XMLs\" _
   & WS_Src.Cells(c.Row, 5).Value & "_" & WS_Src.Cells(c.Row, 4).Value & "_Feature.xml", True)

...

stream.WriteLine "<title>" & vbCrLf & "<![CDATA[ " & WS_Src.Cells(c.Row, 6).Value & "]]>" & vbCrLf   & "</title>" 'error is on this line
stream.Close

谢谢! 克里斯

1 个答案:

答案 0 :(得分:3)

使用CreateTextFile方法的Sytax类似于object.CreateTextFile(filename[, overwrite[, unicode]]) 。其中:

  • filename:必填。用于标识要创建的文件的字符串表达式。
  • overwrite可选。布尔值,指示是否可以覆盖现有文件。如果文件可以被覆盖,则值为True;如果无法覆盖,则返回false。如果省略,则不会覆盖现有文件。
  • unicode可选。布尔值,指示文件是创建为Unicode还是ASCII文件。如果文件是作为Unicode文件创建的,则值为True;如果它是作为ASCII文件创建的,则为False。如果省略,则假定为ASCII文件。

你在这里省略了最后一个参数,但是Chinese的传入文本不只是ASCII。相反,你必须提供True值,我的意思是unicode param。这肯定会解决问题。

顺便说一句!我仍然可以在代码中看到一些可能导致其他运行时错误的因素。

  • 在通过连接单元格值生成文件名时,请确保路径字符串中不存在无效字符
  • 此外,仅将overwrite值设置为true是不够的,还要确保该文件夹已存在。否则,该过程将再次被运行时错误捕获。

希望这会有所帮助。