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
是不够的,还要确保文件夹已经存在。 否则,程序将再次被运行时错误捕获。
希望这可以帮助。