vbs类型不匹配错误800a000d类型不匹配:readfile

时间:2013-01-22 13:35:02

标签: file-io vbscript

我是vbs的新手,并且在行集arr = readfile(FileName)上收到错误

我正在尝试将文件读入数组

并且无法弄清楚我做错了什么

提前感谢您的协助

 Dim FileName ' File Name to Process
 Call MainProcedure
 WScript.Quit

 Sub MainProcedure
   filename = "c:\print\check.bat"
   WScript.Echo( "Printing document in progress..." )
   WScript.Echo( "Filename ====> " & FileName )
   Dim arr, i
   i = 0
   set arr = readfile( FileName )
   For Each present In arr
     ' user = split(present,",")
     ' WScript.Echo user(0) & user(1) & user(2) & user(3) & user(4) & "|"
     i = i + 1
     WScript.Echo present & "|"
   Next
End Sub

Sub readfile(strFile)
  dim fs,objTextFile
  set fs=CreateObject("Scripting.FileSystemObject")
  If (fs.FileExists( strFile)) Then
     dim userArrayList
     set objTextFile = fs.OpenTextFile(strFile)
     Set userArrayList = CreateObject( "System.Collections.ArrayList" )
     Do Until objTextFile.AtEndOfStream
        strNextLine = objTextFile.Readline
        userArrayList.add strNextLine
     Loop
     objTextFile.Close
     set objTextFile = Nothing
     set fs = Nothing
     set readfile = userArrayList
  Else
     'Alert User
     WScript.Echo("File does not exist!")
     WScript.Quit()
  End If
end Sub

1 个答案:

答案 0 :(得分:4)

set arr = readfile( FileName )

暗示readfile()是一个Function(返回一个ArrayList)。但是你定义了

Sub readfile(strFile)
...
set readfile = userArrayList
...
end Sub

您可以尝试将其更改为

Function readfile(strFile)
...
set readfile = userArrayList
...
End Function

<强>增加:

任务“将文件'行读入数组”可以用更简单的方式完成:

cscript fitoar.vbs
0 Option Explicit
1 Dim a : a = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile("fitoar.vbs").ReadAll(), vbCrLf)
2 Dim l
3 For l = 0 To UBound(a)
4     WScript.Echo l, a(l)
5 Next
6