VBS对象所需的错误,800A01A8

时间:2015-08-19 16:04:08

标签: vbscript

您好我正在尝试调试我在下面继承的脚本。错误在第71行char 6.对象需要'oFile'

我没有任何vbs经验,所以请保持温柔。这个脚本进行扫描并将其上传到doc存档服务器,给它提供唯一的文件名等。我还没弄清楚还有什么'ofile':/

'Feb 18, 2005

Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
hiddenCount = 0
'Wscript.Echo Wscript.Arguments(0)
If Wscript.Arguments.Count = 1 And oFSO.FolderExists(Wscript.Arguments(0))  Then
    Set scanFiles = oFSO.GetFolder(Wscript.Arguments(0)).Files
    For Each oFile In scanFiles
    If oFile.Attributes and 2 Then
    hiddenCount = hiddenCount + 1
End If
        Next
Else
    Set scanFiles = WScript.Arguments
End If
fileCount = scanFiles.Count - hiddenCount
'Wscript.Echo hiddenCount
'WScript.Echo fileCount
'WScript.Quit()
Set oIE = WScript.CreateObject("InternetExplorer.Application")
oIE.left=50 ' window position
oIE.top = 100 ' and other properties
oIE.height = 300
oIE.width = 350
oIE.menubar = 0 ' no menu
oIE.toolbar = 0
oIE.statusbar = 1
oIE.navigate "http://gisweb/apps/doc_archive/scan_login.php?file_count="&fileCount
'WScript.Echo fileCount
oIE.visible = 1

' Important: wait till MSIE is ready
  Do While (oIE.Busy)      
  Loop

' Wait till the user clicks the OK button
' Use the CheckVal function
' Attention: Thanks to a note from M. Harris, we can make 
' the script a bit more fool proof. We need to catch the case 
' that the user closes the form without clicking the OK button.
 On Error Resume Next  
 Do                     ' Wait till OK button is clicked
    WScript.Sleep 400
 Loop While (oIE.document.script.CheckVal()=0)

' If an error occur, because the form is closed, quit the
' script
 If err <> 0 Then
  WScript.Echo "Sorry, a run-time error occured during checking" & _
               " the OK button " & vbCRLF & _
               "Error: " & err.number & " " & _
               "I guess the form was getting closed..."
  WScript.Quit        ' end script
 End if
 On Error Goto 0    ' switch error handling off 

' User has clicked the OK button, retrieve the values
docList = oIE.Document.ValidForm.doc_id_list.Value
'MsgBox doc_id
 For i = 0 To 100000
    x = 1
 Next 
 oIE.Quit()             ' close Internet Explorer
 Set oIE = Nothing      ' reset object variable 


 docArray = Split(docList,",")
 i = 0
 For Each oFile In scanFiles
     If Not oFile.Attributes And 2 Then  **ERROR HERE**
    ext = oFSO.GetExtensionName(oFile)
    filename = "p"&right("000000"&docArray(i),6)&"."&ext
    base = Int(docArray(i) / 500) * 500
    subdir = "d"&right("000000"&base,6)
    oFSO.CopyFile oFile, "\\ditgis02\Enterprise_GIS\doc_archive\raw\"&subdir&"\"&filename, True
    i = i + 1
     End If
Next
If Wscript.Arguments.Count = 1 And oFSO.FolderExists(Wscript.Arguments(0))  Then
    Set WshShell = WScript.CreateObject("WScript.Shell")
    intButton = WshShell.Popup (fileCount&" file(s) logged and copied! Do you want to delete temporary scan files?",0,"Done!",4)
    If intButton = 6 Then
        For Each oFile In scanFiles
            oFile.Delete
        Next
    End If
Else
    WScript.Echo(fileCount&" file(s) logged and copied!")
End If
WScript.Quit()            ' Ready
' End

1 个答案:

答案 0 :(得分:0)

如果您的初始测试失败,可能会出现问题:

If Wscript.Arguments.Count = 1 And oFSO.FolderExists(Wscript.Arguments(0))  Then
    ...
Else
    Set scanFiles = WScript.Arguments
End If

您将scanFiles变量设置为参数集合,而不是文件。稍后,在第71行(发生错误的位置)附近,您将scanFiles视为FilesAttributes集合,并尝试访问一个File属性它的For Each oFile In scanFiles If Not oFile.Attributes And 2 Then **ERROR HERE** ... Next 个对象:

scanFiles

由于ArgumentsElse集合,因此无法实现。所以我认为您需要修复您的初始Files子句,以终止您的脚本或提供某种&#34;默认&#34; NotifyPropertyChanged集合。