12827

Calling ImageMagick COM from VBScript in Excel

Question:

I'm using Windows 7 64 bit and Excel 2013.

I added the reference ImageMagickObject 1.0 Type Library and also made sure that I am not binding early. I also installed Dynamic 64 bit 16Q ImageMagick.

I still have an error with error number '-2147215503' when I run the following code.

Private Sub CommandButton1_Click() On Error GoTo ErrorHandler Dim img Set img = New ImageMagickObject.MagickImage MsgBox (img.Convert("C:\test1.jpg", "-format", "%c", "histogram:info:C:\out.txt")) Exit Sub ErrorHandler: MsgBox (Err.Number & ":" & Err.Description) End Sub

Please let me know what is wrong with this code. I would also be grateful if anybody can point for VBA ImageMagick Documentation. I've searched on Imagemagick.org but couldn't find anything.

Thanks a lot.

Answer1:

<strong>To Decode 0x8004nnnn Errors</strong>

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.

<em>-2147215503 = FFFFFFFF80041771 = 1771 = error specific to component (only imagemagick knows what it means)</em>

<strong>Decoding Errors</strong>

-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) <a href="http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D8279&sa=U&ei=w2IrULDDLsHFmAWbmIHoBg&ved=0CBwQFjAA&usg=AFQjCNHZn9-4f2NnuN9o3UWUsOF3wL7HBQ" rel="nofollow">http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D8279&sa=U&ei=w2IrULDDLsHFmAWbmIHoBg&ved=0CBwQFjAA&usg=AFQjCNHZn9-4f2NnuN9o3UWUsOF3wL7HBQ</a>

If you just want the two files I have them on my skydrive so I can reference them anywhere I go. <a href="https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121" rel="nofollow">https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121</a>

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.

<strong>Structure of HResults and NTStatus Codes</strong>

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.

<strong>To Decode 0x8003nnnn Errors</strong>

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

<strong>To Decode 0x8004nnnn Errors</strong>

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.

This is why the source of the error is extra important for errors above 0x80040200.

<strong>To Decode 0x8007nnnn Errors</strong>

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

<strong>To Decode 0x8019nnnn Errors</strong>

HResults with facility 0x19 are HTTP errors. Codes under 16,384 (0x4000) are the same as HTTP errors, eg HTTP status 404: The requested URL does not exist on the server is 0x80190194 (0x194 = 404). Codes 16,384 and higher are BITS specific.

<strong>Dos Error Codes (for 0x8003nnnn errors)</strong>

Code Message 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)

<strong>Facility Codes</strong>

<strong>NTStatus Facilities HResults Facilities</strong>

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

Recommend

  • Error 2147463168 when trying to bind to an AD User Object
  • Using COM dll in C#
  • DELETE FROM … reporting syntax error at or near “.”
  • SQL Server 2005, Caches and all that jazz
  • Process.PrivateMemorySize64 returning committed memory instead of private
  • Prolog Query - Trying to understand how this result happens
  • bit shift multiplication in c not using powers of 2 [duplicate]
  • How to find MongoDB field name at arbitrary depth
  • In a MEAN stack, how can I do one-time MongoDB indexing?
  • Indexing datetime in MySQL
  • Sticky Footer W/JQuery Mobile
  • R - Change list of ggplot objects into a list of grobs that grid.arrange will accept?
  • How to Compose OSGi Based project with C++ based project?
  • Database First with Bridge Table, How to Keep It Out of Model
  • Change URL of the windows for every different Tab
  • Firefox extension testing and developing - I'm confused
  • How to work with AMMediaType for video filters
  • Counting Treaps
  • How to change placeholder text in an autocomplete activity of android google place?
  • Spring boot mapping static html
  • Relative paths. baseUrl and paths not working on ionic2 - angular2
  • Configure nginx to return different files to different authenticated users with the same URI
  • Cannot get text from text area
  • How to use Windows Media Foundation with UWP without a topology
  • Sensibility of combined Maven/Ant+Ivy build management for dual platform Desktop/Android deployment?
  • For loop with if condition on multiple R functions
  • How do I retrieve the user information of a user authenticated with Apache's mod_ldap?
  • Bootstrap (v3.3.4) glyphicons not displayed in IE when refresh page (F5)
  • Pycharm: Marking a folder as 'sources root' is not recursive for subfolders
  • Validate child input components on submit with Vee-Validate and vue js 2
  • AndEngine Applying Transparancy to AndEngine View
  • why xml file does not aligned properly after append the string in beginning and end of the file usin
  • Reading JSON from a file using C++ REST SDK (Casablanca)
  • Python CGI os.system causing malformed header
  • Projection media query: browser support and workarounds?
  • Jquery - Jquery Wysiwyg return html as a string
  • Confusion with PayPal's monthly billing cycle
  • How to disable jQuery.jplayer autoplay?
  • What are the advantages and disadvantages of reading an entire file into a single String as opposed
  • Unable to use reactive element in my shiny app