需要从函数中检索数据并在宏excel中写入文本文件

Tej*_*eni 0 excel vba excel-vba

我有三个函数,在宏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
Run Code Online (Sandbox Code Playgroud)

现在我想将所有这些函数数据写入amix.txt记事本

而且,如果我们在每个函数中编写两个(创建Obj和文件)行,则文本文件将覆盖每个函数.

现在,您能否告诉我代码,我可以摆脱我的问题?

Jer*_*ino 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
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

编辑:

如果要在另一个函数内调用函数,只需确保内部函数首先存在.这样做没有问题.然而,这种做法充其量通常是非正统的.同样如下(测试和工作):

Public Function WriteC(File As Object)
     'Calling WriteB inside WriteC as well.
     File.writeline "GHI"
     WriteB File
End Function
Run Code Online (Sandbox Code Playgroud)

如果这有帮助,请告诉我们.