2010-07-16 44 views
7

Recibo un error de "objeto requerido" en la línea 54, la última línea, cuando ejecuto el siguiente script. ¿Qué está mal?Error de VB "se requiere objeto"

Option Explicit 
Dim cmdString, g_strHostFile, filepath, flexnetpath, importcmd, dtmToday, dtmYesterday, dtmFileDate, param1, param2, param3, i4path, objFSO, objTextStream, g_strComputer, WshShell 
'Initialize global constants and variables. 
Const FOR_READING = 1 
g_strHostFile = "D:\dataimports\LUM_servers.txt" 
i4path = "C:\IFOR\WIN\BIN\i4blt.exe" 
filepath = "D:\DataImports\" 
flexnetpath = "C:\Program Files (x86)\Flexnet\Manager\Admin" 
importcmd = flexnetpath & "flexnet bulkimport -uadmin -padmin -f" & filepath 
dtmToday = Date() 
dtmYesterday = Date() - 1 
dtmFileDate = Year(Date) & padDate(Month(Date)) & padDate(Day(Date)) 
param1 = "-r1 -e2,4 -n " 
param2 = " -v 'Dassault Systemes' -b " 
param3 = " -g " 
WScript.Echo "i4Path: " & i4path 
WScript.Echo "FilePath: " & filepath 
WScript.Echo "flexnetpath: " & flexnetpath 
WScript.Echo "importcmd: " & importcmd 
WScript.Echo "dtmToday: " & dtmToday 
WScript.Echo "dtmYesterday: " & dtmYesterday 
WScript.Echo "dtmFileDate: " & dtmFileDate 

'Read LUM Server Names from text file. 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
If objFSO.FileExists(g_strHostFile) Then 
    Set objTextStream = objFSO.OpenTextFile(g_strHostFile, FOR_READING) 
Else 
    WScript.Echo "Input file " & g_strHostFile & " not found." 
    WScript.Quit 
End If 
'Loop through list of computers and perform tasks on each. 
Do Until objTextStream.AtEndOfStream 
    g_strComputer = objTextStream.ReadLine 
WScript.Echo "Processing Server: " & g_strComputer 
Set cmdString = i4path & param1 & g_strComputer & param2 & dtmYesterday & param3 & dtmToday & filepath & g_strComputer & "_" & dtmFileDate & "_lum.lrl" 
WScript.Echo "Processing Command: " & cmdString 
Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "cmdString" 
Loop 
objTextStream.Close 
Set WshShell = WScript.CreateObject("WScript.Shell") 
WScript.Echo "Processing Bulk Import: " & importcmd 
WshShell.Run "importcmd" 

Function padDate(intNumber) 
if intNumber <= 9 Then 
    padDate = "0" & CStr(intNumber) 
Else 
    padDate = CStr(intNumber) 
End If 
End Function 
+0

¿En qué línea aparece este error? – Sarfraz

+0

¿Sabes dónde se produce el error? Podría usar 'WScript.Echo' o' MsgBox' con algo de texto solo para que pueda delimitar el área en el código donde está ocurriendo el error. –

+0

Línea 54, la última línea. – ChuckO

Respuesta

6

Hay algunos problemas, creo.

importcmd = flexnetpath & "flexnet bulkimport -uadmin -padmin -f" & filepath 

Es probable que tenga algunos espacios:

importcmd = flexnetpath & " flexnet bulkimport -uadmin -padmin -f " & filepath 

Conjunto sólo se utiliza con objetos, no cadenas, por lo que debe ser eliminado de esta línea:

Set cmdString = i4path & param1 & g_strComputer & param2 & dtmYesterday & param3 & dtmToday & filepath & g_strComputer & "_" & dtmFileDate & "_lum.lrl" 

Estoy bastante seguro o quiere decir

WshShell.Run importcmd 

O

WshShell.Run """" & importcmd & """" 
5

objeto requerido es elevado cuando se tiene una declaración como Set x = y donde x no es un tipo de objeto, sino que es un tipo simple (Integer, Double, Date, etc.). Creo que la línea

Set cmdString = i4path & param1 & g_strComputer & param2 & ... 

está causando el error, y creo que todo lo que tiene que hacer es quitar la instrucción Set. Creo que las cadenas no se derivan de Object y, por lo tanto, no necesitan la instrucción Set.

Cuestiones relacionadas