简体   繁体   中英

VBS Object required error, 800A01A8

Hello I'm trying to debug this script that I inherited below. The error is on line 71 char 6. Object required 'oFile'

I don't have any vbs experience so please be gentle. This script takes a scan and uploads it to a doc archive server, gives it unique filename etc. I haven't figured out what 'ofile' is yet :/

'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

It looks the problem may arise if your initial test fails:

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

You're setting the scanFiles variable to a collection of arguments, not files. Later on, near line 71 (where your error occurs), you're treating scanFiles as if it's a Files collection and attempting to access the Attributes property of one of its File objects:

For Each oFile In scanFiles
    If Not oFile.Attributes And 2 Then  **ERROR HERE**
    ...
Next

This won't be possible since scanFiles is an Arguments collection instead. So I think you need to fix your initial Else clause to either terminate your script or provide some kind of "default" Files collection.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM