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

我是相当新的VBA和难倒如何解决“运行时错误”5:无效的过程调用或参数“错误,我正在执行此代码时收到。 有问题的单元格有中文字符和代码似乎在英文字母表上工作正常。 该stream正在输出到一个文本文件。 (将来应该是一个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 

谢谢! 克里斯

使用CreateTextFile方法的object.CreateTextFile(filename[, overwrite[, unicode]])就像object.CreateTextFile(filename[, overwrite[, unicode]]) 。 哪里:

  • filename :必需。 标识要创build的文件的stringexpression式。
  • overwrite可选。 指示现有文件是否可以被覆盖的布尔值。 如果文件可以被覆盖,则值为True; 如果不能被覆盖,则为假。 如果省略,现有文件不会被覆盖。
  • unicode可选。 指示文件是作为Unicode还是ASCII文件创build的布尔值。 如果文件创build为Unicode文件,则值为True; 如果创build为ASCII文件,则为False。 如果省略,则假定为ASCII文件。

而你在这里省略了最后一个参数,但是接收到的文本,不仅仅是ASCII 。 相反,你必须提供一个True价值,我的意思是unicode参数。 这肯定会解决问题。

BTW! 代码中还有一些因素可能导致其他运行时错误。

  • 当您通过连接单元格值生成文件名时,请确保pathstring中不存在无效字符,
  • 而且,只有将overwrite值设置为true是不够的,还要确保文件夹已经存在。 否则,程序将再次被运行时错误捕获。

希望这可以帮助。