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

时间:2014-02-17 13:33:21

标签: vba excel-vba excel

我有三个函数,在宏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和文件)行,那么文本文件就会超出每个函数的范围。

现在,您可以建议我使用代码来解决我的问题吗?

2 个答案:

答案 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