簡體   English   中英

需要從函數中檢索數據並在宏Excel中寫入文本文件

[英]Need to retrieve the data from the function and write in the text file in macros 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記事本

而且,如果我們在每個函數中都寫了兩行(創建對象和文件),則文本文件對於每個函數來說都是多余的。

現在,您可以通過代碼來建議我,我可以擺脫我的問題嗎?

顯然,錯誤是您沒有將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

讓我們知道是否有幫助。

您需要將文本文件對象設置為Global。 您還應該使用Subs而不是Function 例如:

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM