1

我对 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

谢谢!克里斯

4

1 回答 1

4

使用CreateTextFile方法的语法类似于 object.CreateTextFile(filename[, overwrite[, unicode]]) . 在哪里:

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

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

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

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

希望这可以帮助。

于 2012-07-28T03:13:35.343 回答