fileOut.Write对象不支持此属性或方法

时间:2019-05-08 16:51:19

标签: excel vba

我正在用Excel编写VBA项目,并尝试将文本输出到txt文件。但是,我在fileOut.Write遇到了“对象不支持该属性或方法”错误。

想知道我的fileOut.Write是否正确吗?

Dim fso, fileOut As Object



'Begin writing backup script
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileOut = fso.CreateTextFile(currentWorkbookPath & "\" & srrNumber & "_bkp.txt", True, False)


fileOut.Write = "#!/bin/sh -x" & vbCrLf & vbCrLf

1 个答案:

答案 0 :(得分:3)

FileSystemObject.CreateTextFile产生一个TextStream对象,该对象确实具有Write 方法(它也具有WriteLine方法)...但是您正在使用它,就好像它是可分配的属性

只需删除=赋值运算符。

fileOut.Write "#!/bin/sh -x" & vbCrLf & vbCrLf

(注意:不需要任何括号)


请注意,这将fileOut声明为Object,而将fso保留为隐式Variant

Dim fso, fileOut As Object

您要为所有变量声明一个显式类型:

Dim fso As Object, fileOut As Object

...并且最好避免在单个指令中声明多个变量:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

Dim fileOut As Object
Set fileOut = fso.CreateTextFile(currentWorkbookPath & "\" & srrNumber & "_bkp.txt", True, False)

fileOut.Write content

最后,请注意, Microsoft脚本运行时库没有理由不在VBA中引用。在编辑器的“工具”菜单中,选择“参考...”,然后在列表中找到类型库。然后使用实际类型:

Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim fileOut As TextStream
Set fileOut = fso.CreateTextFile(currentWorkbookPath & "\" & srrNumber & "_bkp.txt", True, False)

fileOut.Write content

请注意,当使用实际的对象类型时,键入.(点)运算符时会获得可用成员的列表:这将彻底消除运行时错误438,永远。当您针对Object进行操作时,只能在运行时解决成员调用(即“后期”绑定),这更容易出错,尤其是在您不熟悉所使用的库的情况下。

除非您打算在Mac上运行代码,否则无需与 Microsoft Scripting Runtime 库一起使用后期绑定。