2013-04-11 58 views
0

我有一個vbscript函數與創建並打開文本文件。我想將函數中的文件句柄返回到代碼的主體。不幸的是,我收到一個對象不支持這個屬性或方法的錯誤。從函數返回文件句柄在vbscript

最終,我將在代碼中設置一個調試腳本,該腳本具有打開,寫入,閱讀和關閉文件的功能。然後,我可以將該腳本導入到另一個vbscript文件中,並將其用於調試目的。但是,首先,我需要獲取下面的代碼才能工作。

預先感謝您。

下面是代碼:

Function OpenFileWrite(sDirectory, sFile) 
    Dim objFSO 'As FileSystemObject 
    Dim objTextFile 'As Object 

    Const ForReading = 1 
    Const ForWriting = 2 
    Const ForAppending = 8 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 

    ' Check that the strDirectory folder exists 
    If objFSO.FolderExists(sDirectory) Then 
      Set objFolder = objFSO.GetFolder(sDirectory) 
    Else 
      Set objFolder = objFSO.CreateFolder(sDirectory) 
      WScript.Echo "Just created " & sDirectory 
    End If 

    If objFSO.FileExists(sDirectory & "\" & sFile) Then 
      Set objFile = objFSO.GetFile(sDirectory & "\" & sFile) 
    Else 
      Set objFile = objFSO.CreateTextFile(sDirectory & "\" & sFile) 
      Wscript.Echo "Just created " & sDirectory & "\" & sFile 
    End If 

    Set objTextFile = objFSO.OpenTextFile(sDirectory & "\" & sFile, ForWriting, True) 

    OpenFileWrite = objTextFile 

End Function 

sDirectory = "\" 
sFile = "debug.txt" 

Set ObjFile = OpenFileWrite(sDirectory, sFile) 

回答

2

您需要Set對象分配給一個變量函數的返回值:

OpenFileWrite = objTextFile 
==> 
Set OpenFileWrite = objTextFile 

(在Set OpenFileWrite = objTextFileSet服從規則「使用集來分配對象」; OpenFileWrite ='實現'規則'分配給函數名來指定返回值「。)

+0

謝謝。奇怪的是,如何通過簡單的Google搜索來返回函數中的值,但並未提及您需要應用Set關鍵字。我不明白爲什麼其他示例在從函數返回值時不使用Set關鍵字。 – user717236 2013-04-11 19:06:34