Shell Scripting Run Time Error - Method 'Run' of Object 'IWshShell3' failed RRS feed

  • Question

  • Our organization recently upgraded from Windows XP to Windows 7.  We have several macros embedded within excel workbooks.  One of them now is erroring out when trying the run method of shell script.

    I'm receiving a Run Time Error '-2147023741 (80070483)'

    Method 'Run' of Object 'IWShell3' failed

    Here's the code snippet:

    outdir is a file path variable

    Set wshShell = CreateObject("WScript.Shell")

    cmd = outdir & "conv_shape.gms"

    RetVal = wshShell.Run(chr(34) & cmd & chr(34), ,True)

    It worked fine utilizing XP, however, not now in Windows 7.

    Any help is greatly appreciated!


    Wednesday, June 25, 2014 3:53 PM

All replies

  • There is no file association for your filetype. So set one up or specify the program like

    notepad c:\conv_shape.gms

    How to read errors

    -2147220978 style numbers are 32 bit signed integers, convert to hex with calculator.

    Windows errors (smallish numbers) and  COM HResults (typically, but with exceptions, start with an 8 as in 0x80040154) are defined in WinError.h, except 8007nnnn where you look up the Window error number that it contains.

    As a general rule Windows errors are less than 65,535 (0xFFFF). Errors starting 0x80000001 are Component Object Model (COM) HResults. Errors starting 0xc0000001 are NTStatus results. 

    NTStatus errors (typically but not always start with an C as in 0xC0000022) are defined in NTStatus.h.

    .h files are the best source because it includes the symbolic name of the error which can give clues such as the source of the error. FormatMessage doesn't give the symbolic name only the description.

    You get these files by downloading the Platform SDK (it's gigabytes)

    If you just want the two files I have them on my skydrive so I can reference them anywhere I go.

    Note internet errors (12,000 - 12,999) are windows errors but are specified in wininet.h also available above. 

    There are errors defined in other .h files. But 99% are in the three above.

    Structure of HResults and NTStatus Codes

    The most significant bit in HResults, and the two most significant bits in NTStatus are set on error. Hence Hresults start 8 on error and NTStatus starts C on Error. The next 14 or 15 bits are reserved and some specify the facility - what area the error is in. This is the third and fourth number when reading hex. EG 0xnn07nnnn - An HResult facility code 7 is a normal Windows' error (returned from a COM program - hence it's returned as a HResult). Facility codes are defined in Winerror.h for HResults and NTStatus.h for NTStatus codes. They are different.
    To Decode 0x8003nnnn Errors

    HResults with facility code 3 means the HResult contains OLE Structured Storage errors (0x0 to 0xff). These don't seem to be in Windows' header files and the list of codes is at the end of this post.

    To Decode 0x8004nnnn Errors

    HResults with facility code 4 means the HResult contains OLE errors (0x0 to 0x1ff) while the rest of the range (0x200 onwards) is component specific errors so 20e from one component will have a different meaning to 20e from another component.

    To Decode 0x8007nnnn Errors

    HResults with facility code 7 means the HResult contains a Windows' error code. You have to look up the Windows' error code not the HResult.

    To decode 0x80070002. The 0x means it's a hexadecimal number, the 8 means error, the first 7 means it a windows error, and the rest of the number, 2, is the actual Windows error.
    To look up the error we need it in decimal format. Start Calculator (Start - All Programs - Accessories - Calculator) and choose View menu - Scientific, then View menu - Hex. Enter 2. Then View menu -  Decimal. It will say 2.
    Start a Command Prompt (Start - All Programs - Accessories - Command Prompt) and type
    net helpmsg 2
    and it will say
    The system cannot find the file specified.
    or look it up in winerror.h
    // MessageId: ERROR_FILE_NOT_FOUND
    // MessageText:
    // The system cannot find the file specified.
    #define ERROR_FILE_NOT_FOUND             2L
    Dos Error Codes (for 0x8003nnnn errors)

    01 Invalid function number
    02 File not found
    03 Path not found
    04 Too many open files (no handles left)
    05 Access denied
    06 Invalid handle
    07 Memory control blocks destroyed
    08 Insufficient memory
    09 Invalid memory block address
    0A Invalid environment
    0B Invalid format
    0C Invalid access mode (open mode is invalid)
    0D Invalid data
    0E Reserved
    0F Invalid drive specified
    10 Attempt to remove current directory
    11 Not same device
    12 No more files
    13 Attempt to write on a write-protected diskette
    14 Unknown unit
    15 Drive not ready
    16 Unknown command
    17 CRC error
    18 Bad request structure length
    19 Seek error
    1A Unknown media type
    1B Sector not found
    1C Printer out of paper
    1D Write fault
    1E Read fault
    1F General failure
    20 Sharing violation
    21 Lock violation
    22 Invalid disk change
    23 FCB unavailable
    24 Sharing buffer overflow
    25 Reserved
    26 Unable to complete file operation (DOS 4.x)
    27-31 Reserved
    32 Network request not supported
    33 Remote computer not listening
    34 Duplicate name on network
    35 Network name not found
    36 Network busy
    37 Network device no longer exists
    38 NetBIOS command limit exceeded
    39 Network adapter error
    3A Incorrect network response
    3B Unexpected network error
    3C Incompatible remote adapter
    3D Print queue full
    3E No space for print file
    3F Print file deleted
    40 Network name deleted
    41 Access denied
    42 Network device type incorrect
    43 Network name not found
    44 Network name limit exceeded
    45 NetBIOS session limit exceeded
    46 Temporarily paused
    47 Network request not accepted
    48 Print or disk redirection is paused
    49-4F Reserved
    50 File already exists
    51 Reserved
    52 Cannot make directory entry
    53 Fail on INT 24
    54 Too many redirections
    55 Duplicate redirection
    56 Invalid password
    57 Invalid parameter
    58 Network device fault
    59 Function not supported by network (DOS 4.x)
    5A Required system component not installed (DOS 4.x)

    Facility Codes
    NTStatus Facilities HResults Facilities
    Common status values 0x0 Null 0x0
    Debugger 0x1 Rpc 0x1
    Rpc_runtime 0x2 Dispatch 0x2
    Rpc_stubs 0x3 Storage 0x3
    Io_error_code 0x4 Itf 0x4
    Various drivers 0x5-0xf Win32 0x7
    Ntwin32 0x7 Windows 0x8
    Ntsspi 0x9 Sspi 0x9
    Terminal_server 0xa Security 0x9
    Faciltiy_mui_error_code 0xb Control 0xa
    Usb_error_code 0x10 Cert 0xb
    Hid_error_code 0x11 Internet 0xc
    Firewire_error_code 0x12 Mediaserver 0xd
    Cluster_error_code 0x13 Msmq 0xe
    Acpi_error_code 0x14 Setupapi 0xf
    Sxs_error_code 0x15 Scard 0x10
    Transaction 0x19 Complus 0x11
    Commonlog 0x1a Aaf 0x12
    Video 0x1b Urt 0x13
    Filter_manager 0x1c Acs 0x14
    Monitor 0x1d Dplay 0x15
    Graphics_kernel 0x1e Umi 0x16
    Driver_framework 0x20 Sxs 0x17
    Fve_error_code 0x21 Windows_ce 0x18
    Fwp_error_code 0x22 Http 0x19
    Ndis_error_code 0x23 Usermode_commonlog 0x1a
    Hypervisor 0x35 Usermode_filter_manager 0x1f
    Ipsec 0x36 Backgroundcopy 0x20
    Maximum_value 0x37 Configuration 0x21
    State_management 0x22
    Metadirectory 0x23
    Windowsupdate 0x24
    Directoryservice 0x25
    Graphics 0x26
    Shell 0x27
    Tpm_services 0x28
    Tpm_software 0x29
    Pla 0x30
    Fve 0x31
    Fwp 0x32
    Winrm 0x33
    Ndis 0x34
    Usermode_hypervisor 0x35
    Cmi 0x36
    Windows_defender 0x50

    • Edited by DavidMCandy Thursday, June 26, 2014 1:56 AM
    Wednesday, June 25, 2014 8:34 PM