我有三个函数,在宏excel中。我正在展示一个理解
的例子Sub main()
Dim Obj As Object
Dim File As Object
Set Obj = CreateObject("Scripting.FileSystemObject")
Set File = Obj.createtextfile("c:\amix.txt"", True)
A
B
C
End sub
Public Function A()
file.writeline("ABC")
End Function
Public Function B()
file.writeline("Def")
End Function
Public Function C()
file.writeline("GHI")
End Function
现在我想将所有这些功能数据写入amix.txt记事本
而且如果我们在每个函数中编写两个(创建Obj和文件)行,那么文本文件就会超出每个函数的范围。
现在,您可以建议我使用代码来解决我的问题吗?
答案 0 :(得分:5)
显然,错误是您没有将File
传递给您的函数。请尝试以下方法。它经过了试验和测试。此外,您的目录最后还有一个"
。不确定你是否只是打字错误。
Sub main()
Dim Obj As Object
Dim File As Object
Set Obj = CreateObject("Scripting.FileSystemObject")
Set File = Obj.CreateTextFile("c:\amix.txt", True)
WriteA File
WriteB File
WriteC File
End Sub
Public Function WriteA(File As Object)
File.writeline "ABC"
End Function
Public Function WriteB(File As Object)
File.writeline "DEF"
End Function
Public Function WriteC(File As Object)
File.writeline "GHI"
End Function
希望这有帮助。
修改强>
如果要在另一个内部调用函数,只需确保内部函数首先存在。这样做没有问题。然而,这种做法充其量通常是非正统的。同样如下(测试和工作):
Public Function WriteC(File As Object)
'Calling WriteB inside WriteC as well.
File.writeline "GHI"
WriteB File
End Function
如果有帮助,请告诉我们。
答案 1 :(得分:2)
您需要将文本文件对象设为Global。您还应该使用子而不是功能。例如:
Dim Obj As Object
Dim Ffile As Object
Sub main()
Set Obj = CreateObject("Scripting.FileSystemObject")
Set Ffile = Obj.createtextfile("C:\TestFolder\amix.txt", True)
Call A
Call B
Call C
End Sub
Sub A()
Ffile.writeline ("ABC")
End Sub
Sub B()
Ffile.writeline ("Def")
End Sub
Sub C()
Ffile.writeline ("GHI")
End Sub
此外,最终你应该执行
Ffile.Close