INFO:VB/VBA (Long) 的转换自动化错误
概要
本文介绍了几种可以用于获得错误代码消息文本的方法。本文还包含在 Winerror.h 中找到的错误代码和描述的列表。
注意:如果在使用 Visual Basic 中的自动化功能或使用 VBA (Visual Basic for Applications) 时出现错误,则该错误并不总是包括错误消息文本。
注意:如果在使用 Visual Basic 中的自动化功能或使用 VBA (Visual Basic for Applications) 时出现错误,则该错误并不总是包括错误消息文本。
更多信息
请参阅 Winerror.h
在利用 Visual Basic 或 VBA 自动执行另一个应用程序时,您可能会收到与以下错误类似的错误:运行时错误“-2147418094 (80010012)”:
自动化错误。
值 -2147418094 与错误代码的十进制表示形式相对应;80010012 与同一错误代码的十六进制表示形式相对应。此代码记录在 Microsoft Visual C++ 头文件 Winerror.h 中。若要查找该错误代码,请搜索错误代码的十六进制表示形式(即,80010012)。以下是描述此错误的 Winerror.h 中的摘录: 自动化错误。
//
// MessageId: RPC_E_SERVER_DIED_DNE
//
// MessageText:
//
// The callee (server [not server application]) is not available
// and disappeared; all connections are invalid. The call did not
// execute.
//
#define RPC_E_SERVER_DIED_DNE _HRESULT_TYPEDEF_(0x80010012L)
Microsoft Visual C++ 以及 Microsoft Developer Network (MSDN) Library 均附带有 Winerror.h。 注意:特定于服务器应用程序的自动化错误未列在 Winerror.h 中。如果在 Winerror.h 中未找到该错误代码,请查看服务器应用程序的文档。通常,如果有特定于应用程序的错误,则错误代码的十六进制表示形式的最后 4 位即表示特定于应用程序的错误。
使用 FormatMessage
可以使用 FormatMessage API 函数确定与自动化错误代码关联的消息文本。以下示例函数说明了如何使用 FormatMessage 获得消息文本:
Option Explicit
Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Declare Function FormatMessage Lib "kernel32" Alias _
"FormatMessageA" ( ByVal dwFlags As Long, lpSource As Long, _
ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Any) _
As Long
Private Function MessageText(lCode As Long) As String
Dim sRtrnCode As String
Dim lRet As Long
sRtrnCode = Space$(256)
lRet = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, lCode, 0&, _
sRtrnCode, 256&, 0&)
If lRet >0 Then
MessageText = Left(sRtrnCode, lRet)
Else
MessageText = "Error not found."
End If
End Function
下一示例说明了如何才能将此函数与自动化代码一起使用。在此示例中,Microsoft Excel 为服务器应用程序。在破坏了(或关闭了)工作簿对象后如果引用该对象,则将生成错误。为了说明如何使用 MessageText 函数,此示例特意在关闭了工作簿后引用工作簿对象来生成一个自动化错误:
Dim xl As Object
Dim book As Object
Dim sMsg As String
Set xl = CreateObject("excel.application")
Set book = xl.workbooks.Add
book.Close False
On Error Resume Next
Debug.Print book.Name '<-Generates an automation error because the
' workbook referenced by the book object has
' been closed.
If Err.Number <>0 Then
sMsg = MessageText(Err.Number)
MsgBox "Automation Error " & vbCr & Err.Number & _
" (" & Hex(Err.Number) & ")" & vbCr & sMsg
End If
On Error GoTo 0
Set xl = Nothing
如果在破坏了工作簿后引用该工作簿对象,则将生成运行时错误 -2147418094 (80010012)。这是由 FormatMessage 针对此特定错误返回的消息文本:
The callee (server [not server application]) is not available and disappeared; all connections are invalid.The call did not execute.
注意:FormatMessage 函数未返回特定于应用程序的错误。
使用“错误查找”
Microsoft Visual C++ 版本 5.0 包括名为“错误查找”的实用工具,该实用工具提供错误代码消息文本。若要使用此实用工具,请启动 Microsoft Visual C++,然后单击“工具”菜单上的“错误查找”。键入错误代码并单击“查找”。例如,如果已收到之前描述的错误 -2147418094 (80010012),您应在“错误查找”中键入以下文本,然后单击“查找”:
0x80010012
WINERROR.H 中的错误列表
下表描述了 Microsoft Visual C++ 版本 5.0 随附的 Winerror.h 中包含的错误代码:Automation Automation Error Error in Decimal in Hex Error Description -2147418113 (8000FFFF) Catastrophic failure. -2147942413 (8007000D) The Data is invalid. -2147467263 (80004001) Not implemented. -2147024882 (8007000E) Ran out of memory. -2147024809 (80070057) One or more arguments are invalid. -2147467262 (80004002) No such interface supported. -2147467261 (80004003) Invalid pointer. -2147024890 (80070006) Invalid handle. -2147467260 (80004004) Operation aborted. -2147467259 (80004005) Unspecified error. -2147024891 (80070005) General access denied error. -2147483647 (80000001) Not implemented. -2147483646 (80000002) Ran out of memory. -2147483645 (80000003) One or more arguments are invalid. -2147483644 (80000004) No such interface supported. -2147483643 (80000005) Invalid pointer. -2147483642 (80000006) Invalid handle. -2147483641 (80000007) Operation aborted. -2147483640 (80000008) Unspecified error. -2147483639 (80000009) General access denied error. -2147483638 (8000000A) The data necessary to complete this operation not yet available. -2147467258 (80004006) Thread local storage failure. -2147467257 (80004007) Get shared memory allocator failure. -2147467256 (80004008) Get memory allocator failure. -2147467255 (84009) Unable to initialize class cache. -2147467254 (8400A) Unable to initialize RPC services. -2147467253 (8000400B) Cannot set thread local storage channel control. -2147467252 (8000400C) Could not allocate thread local storage channel control. -2147467251 (8000400D) The user supplied memory allocator is unacceptable. -2147467250 (8000400E) The OLE service mutex already exists. -2147467249 (8000400F) The OLE service file mapping already exists. -2147467248 (80004010) Unable to map view of file for OLE service. -2147467247 (80004011) Failure attempting to launch OLE service. -2147467246 (80004012) There was an attempt to call CoInitialize a second time while single threaded. -2147467245 (80004013) A Remote activation was necessary but was not allowed. -2147467244 (80004014) A Remote activation was necessary but the server name provided was invalid. -2147467243 (80004015) The class is configured to run as a security id different from the caller. -2147467242 (80004016) Use of Ole1 services requiring DDE windows is disabled. -2147467241 (80004017) A RunAs specification must be A RunAs specification must be <domain name>\<user name> or simply <user name>. -2147467240 (80004018) The server process could not be started. pathname may be incorrect. -2147467239 (80004019) The server process could not be started as the configured identity.The pathname may be incorrect or unavailable. -2147467238 (8000401A) The server process could not be started because the configured identity is incorrect.Check the username and password. -2147467237 (8000401B) The client is not allowed to launch this server. -2147467236 (8000401C) The service providing this server could not be started. -2147467235 (8000401D) This computer was unable to communicate with the computer providing the server. -2147467234 (8000401E) The server did not respond after being launched. -2147467233 (8000401F) The registration information for this server is inconsistent or incomplete. -2147467232 (80004020) The registration information for this interface is inconsistent or incomplete. -2147467231 (80004021) The operation attempted is not supported. -2147221504 (80040000) Invalid OLEVERB structure. -2147221503 (80040001) Invalid advise flags. -2147221502 (80040002) Can't enumerate any more, because the associated data is missing. -2147221501 (80040003) This implementation doesn't take advises. -2147221500 (80040004) There is no connection for this connection ID. -2147221499 (80040005) Need to run the object to perform this operation. -2147221498 (80040006) There is no cache to operate on. -2147221497 (80040007) Uninitialized object. -2147221496 (80040008) Linked object's source class has changed. -2147221495 (80040009) Not able to get the moniker of the object. -2147221494 (8004000A) Not able to bind to the source. -2147221493 (8004000B) Object is static; operation not allowed. -2147221492 (8004000C) User cancelled out of save dialog. -2147221491 (8004000D) Invalid rectangle. -2147221490 (8004000E) compobj.dll is too old for the ole2.dll initialized. -2147221489 (8004000F) Invalid window handle. -2147221488 (80040010) Object is not in any of the inplace active states. -2147221487 (80040011) Not able to convert object. -2147221486 (80040012) Not able to perform the operation because object is not given storage yet. -2147221404 (80040064) Invalid FORMATETC structure. -2147221403 (80040065) Invalid DVTARGETDEVICE structure. -2147221402 (80040066) Invalid STDGMEDIUM structure. -2147221401 (80040067) Invalid STATDATA structure. -2147221400 (80040068) Invalid lindex. -2147221399 (80040069) Invalid tymed. -2147221398 (8004006A) Invalid clipboard format. -2147221397 (8004006B) Invalid aspect(s). -2147221396 (8004006C) tdSize parameter of the DVTARGETDEVICE structure is invalid. -2147221395 (8004006D) Object doesn't support IViewObject interface. -2147221248 (80040100) Trying to revoke a drop target that has not been registered. -2147221247 (80040101) This window has already been registered as a drop target. -2147221246 (80040102) Invalid window handle. -2147221232 (80040110) Class does not support aggregation (or class object is remote). -2147221231 (80040111) ClassFactory cannot supply requested class. -2147221184 (80040140) Error drawing view. -2147221168 (80040150) Could not read key from registry. -2147221167 (80040151) Could not write key to registry. -2147221166 (80040152) Could not find the key in the registry. -2147221165 (80040153) Invalid value for registry. -2147221164 (80040154) Class not registered. -2147221163 (80040155) Interface not registered. -2147221136 (80040170) Cache not updated. -2147221120 (80040180) No verbs for OLE object. -2147221119 (80040181) Invalid verb for OLE object. -2147221088 (800401A0) Undo is not available. -2147221087 (800401A1) Space for tools is not available. -2147221056 (800401C0) OLESTREAM Get method failed. -2147221055 (800401C1) OLESTREAM Put method failed. -2147221054 (800401C2) Contents of the OLESTREAM not in correct format. -2147221053 (800401C3) There was an error in a Windows GDI call while converting the bitmap to a DIB. -2147221052 (800401C4) Contents of the IStorage not in correct format. -2147221051 (800401C5) Contents of IStorage is missing one of the standard streams. -2147221050 (800401C6) There was an error in a Windows GDI call while converting the DIB to a bitmap. -2147221040 (800401D0) OpenClipboard Failed. -2147221039 (800401D1) EmptyClipboard Failed. -2147221038 (800401D2) SetClipboard Failed. -2147221037 (800401D3) Data on clipboard is invalid. -2147221036 (800401D4) CloseClipboard Failed. -2147221024 (800401E0) Moniker needs to be connected manually. -2147221023 (800401E1) Operation exceeded deadline. -2147221022 (800401E2) Moniker needs to be generic. -2147221021 (800401E3) Operation unavailable. -2147221020 (800401E4) Invalid syntax. -2147221019 (800401E5) No object for moniker. -2147221018 (800401E6) Bad extension for file. -2147221017 (800401E7) Intermediate operation failed. -2147221016 (800401E8) Moniker is not bindable. -2147221015 (800401E9) Moniker is not bound. -2147221014 (800401EA) Moniker cannot open file. -2147221013 (800401EB) User input required for operation to succeed. -2147221012 (800401EC) Moniker class has no inverse. -2147221011 (800401ED) Moniker does not refer to storage. -2147221010 (800401EE) No common prefix. -2147221009 (800401EF) Moniker could not be enumerated. -2147221008 (800401F0) CoInitialize has not been called. -2147221007 (800401F1) CoInitialize has already been called. -2147221006 (800401F2) Class of object cannot be determined. -2147221005 (800401F3) Invalid class string. -2147221004 (800401F4) Invalid interface string. -2147221003 (800401F5) Application not found. -2147221002 (800401F6) Application cannot be run more than once. -2147221001 (800401F7) Some error in application program. -2147221000 (800401F8) DLL for class not found. -2147220999 (800401F9) Error in the DLL. -2147220998 (800401FA) Wrong OS or OS version for application. -2147220997 (800401FB) Object is not registered. -2147220996 (800401FC) Object is already registered. -2147220995 (800401FD) Object is not connected to server. -2147220994 (800401FE) Application was launched but it didn't register a class factory. -2147220993 (800401FF) Object has been released. -2146959359 (80080001) Attempt to create a class object failed. -2146959358 (80080002) OLE service could not bind object. -2146959357 (80080003) RPC communication failed with OLE service. -2146959356 (80080004) Bad path to object. -2146959355 (80080005) Server execution failed. -2146959354 (80080006) OLE service could not communicate with the object server. -2146959353 (80080007) Moniker path could not be normalized. -2146959352 (80080008) Object server is stopping when OLE service contacts it. -2146959351 (80080009) An invalid root block pointer was specified. -2146959344 (80080010) An allocation chain contained an invalid link pointer. -2146959343 (80080011) The requested allocation size was too large. -2147352575 (80020001) Unknown interface. -2147352573 (80020003) Member not found. -2147352572 (80020004) Parameter not found. -2147352571 (80020005) Type mismatch. -2147352570 (80020006) Unknown name. -2147352569 (80020007) No named arguments. -2147352568 (80020008) Bad variable type. -2147352567 (80020009) Exception occurred. -2147352566 (8002000A) Out of present range. -2147352565 (8002000B) Invalid index. -2147352564 (8002000C) Unknown language. -2147352563 (8002000D) Memory is locked. -2147352562 (8002000E) Invalid number of parameters. -2147352561 (8002000F) Parameter not optional. -2147352560 (80020010) Invalid callee. -2147352559 (80020011) Does not support a collection. -2147319786 (80028016) Buffer too small. -2147319784 (80028018) Old format or invalid type library. -2147319783 (80028019) Old format or invalid type library. -2147319780 (8002801C) Error accessing the OLE registry. -2147319779 (8002801D) Library not registered. -2147319769 (80028027) Bound to unknown type. -2147319768 (80028028) Qualified name disallowed. -2147319767 (80028029) Invalid forward reference, or reference to uncompiled type. -2147319766 (8002802A) Type mismatch. -2147319765 (8002802B) Element not found. -2147319764 (8002802C) Ambiguous name. -2147319763 (8002802D) Name already exists in the library. -2147319762 (8002802E) Unknown LCID. -2147319761 (8002802F) Function not defined in specified DLL. -2147317571 (800288BD) Wrong module kind for the operation. -2147317563 (800288C5) Size may not exceed 64K. -2147317562 (800288C6) Duplicate ID in inheritance hierarchy. -2147317553 (800288CF) Incorrect inheritance depth in standard OLE hmember. -2147316576 (80028CA0) Type mismatch. -2147316575 (80028CA1) Invalid number of arguments. -2147316574 (80028CA2) I/O Error. -2147316573 (80028CA3) Error creating unique tmp file. -2147312566 (80029C4A) Error loading type library/DLL. -2147312509 (80029C83) Inconsistent property functions. -2147312508 (80029C84) Circular dependency between types/modules. -2147287039 (80030001) Unable to perform requested operation. -2147287038 (80030002) %1 could not be found. -2147287037 (80030003) The path %1 could not be found. -2147287036 (80030004) There are insufficient resources to open another file. -2147287035 (80030005) Access Denied. -2147287034 (80030006) Attempted an operation on an invalid object. -2147287032 (80030008) There is insufficient memory available to complete operation. -2147287031 (80030009) Invalid pointer error. -2147287022 (80030012) There are no more entries to return. -2147287021 (80030013) Disk is write-protected. -2147287015 (80030019) An error occurred during a seek operation. -2147287011 (8003001D) A disk error occurred during a write operation. -2147287010 (8003001E) A disk error occurred during a read operation. -2147287008 (80030020) A share violation has occurred. -2147287007 (80030021) A lock violation has occurred. -2147286960 (80030050) %1 already exists. -2147286953 (80030057) Invalid parameter error. -2147286928 (80030070) There is insufficient disk space to complete operation. -2147286800 (800300F0) Illegal write of non-simple property to simple property set. -2147286790 (800300FA) An API call exited abnormally. -2147286789 (800300FB) The file %1 is not a valid compound file. -2147286788 (800300FC) The name %1 is not valid. -2147286787 (800300FD) An unexpected error occurred. -2147286786 (800300FE) That function is not implemented. -2147286785 (800300FF) Invalid flag error. -2147286784 (80030100) Attempted to use an object that is busy. -2147286783 (80030101) The storage has been changed since the last commit. -2147286782 (80030102) Attempted to use an object that has ceased to exist. -2147286781 (80030103) Can't save. -2147286780 (80030104) The compound file %1 was produced with an incompatible version of storage. -2147286779 (80030105) The compound file %1 was produced with a newer version of storage. -2147286778 (80030106) Share.exe or equivalent is required for operation. -2147286777 (80030107) Illegal operation called on non-file based storage. -2147286776 (80030108) Illegal operation called on object with extant marshallings. -2147286775 (80030109) The docfile has been corrupted. -2147286768 (80030110) OLE32.DLL has been loaded at the wrong address. -2147286527 (80030201) The file download was aborted abnormally. file is incomplete. -2147286526 (80030202) The file download has been terminated. -2147418111 (80010001) Call was rejected by callee. -2147418110 (80010002) Call was canceled by the message filter. -2147418109 (80010003) The caller is dispatching an intertask SendMessage call and cannot call out via PostMessage. -2147418108 (80010004) The caller is dispatching an asynchronous call and cannot make an outgoing call on behalf of this call. -2147418107 (80010005) It is illegal to call out while inside message filter. -2147418106 (80010006) The connection terminated or is in a bogus state and cannot be used any more.Other connections are still valid. -2147418105 (80010007) The callee (server [not server application]) is not available and disappeared; all connections are invalid.The call may have executed. -2147418104 (80010008) The caller (client) disappeared while the callee (server) was processing a call. -2147418103 (80010009) The data packet with the marshalled parameter data is incorrect. -2147418102 (8001000A) The call was not transmitted properly; the message queue was full and was not emptied after yielding. -2147418101 (8001000B) The client (caller) cannot marshal the parameter data - low memory, etc. -2147418100 (8001000C) The client (caller) cannot unmarshal the return data - low memory, etc. -2147418099 (8001000D) The server (callee) cannot marshal the return data - low memory, etc. -2147418098 (8001000E) The server (callee) cannot unmarshal the parameter data - low memory, etc. -2147418097 (8001000F) Received data is invalid; could be server or client data. -2147418096 (80010010) A particular parameter is invalid and cannot be (un)marshalled. -2147418095 (80010011) There is no second outgoing call on same channel in DDE conversation. -2147418094 (80010012) The callee (server [not server application]) is not available and disappeared; all connections are invalid.The call did not execute. -2147417856 (80010100) System call failed. -2147417855 (80010101) Could not allocate some required resource (memory, events, ...) -2147417854 (80010102) Attempted to make calls on more than one thread in single threaded mode. -2147417853 (80010103) The requested interface is not registered on the server object. -2147417852 (80010104) RPC could not call the server or could not return the results of calling the server. -2147417851 (80010105) The server threw an exception. -2147417850 (80010106) Cannot change thread mode after it is set. -2147417849 (80010107) The method called does not exist on the server. -2147417848 (80010108) The object invoked has disconnected from its clients. -2147417847 (80010109) The object invoked chose not to process the call now.Try again later. -2147417846 (8001010A) The message filter indicated that the application is busy. -2147417845 (8001010B) The message filter rejected the call. -2147417844 (8001010C) A call control interfaces was called with invalid 。 -2147417843 (8001010D) An outgoing call cannot be made since the application is dispatching an input-synchronous call. -2147417842 (8001010E) The application called an interface that was marshalled for a different thread. -2147417841 (8001010F) CoInitialize has not been called on the current thread. -2147417840 (80010110) The version of OLE on the client and server machines does not match. -2147417839 (80010111) OLE received a packet with an invalid header. -2147417838 (80010112) OLE received a packet with an invalid extension. -2147417837 (80010113) The requested object or interface does not exist. -2147417836 (80010114) The requested object does not exist. -2147417835 (80010115) OLE has sent a request and is waiting for a reply. -2147417834 (80010116) OLE is waiting before retrying a request. -2147417833 (80010117) Call context cannot be accessed after call completed. -2147417832 (80010118) Impersonate on unsecured calls is not supported. -2147417831 (80010119) Security must be initialized before any interfaces are marshalled or unmarshalled.It cannot be changed once initialized. -2147417830 (8001011A) No security packages are installed on this machine or the user is not logged on or there are no compatible security packages between the client and server. -2147417829 (8001011B) Access is denied. -2147417828 (8001011C) Remote calls are not allowed for this process. -2147417827 (8001011D) The marshalled interface data packet (OBJREF) has an invalid or unknown format. -2147352577 (8001FFFF) An internal error occurred. -2146893823 (80090001) Bad UID. -2146893822 (80090002) Bad Hash. -2146893821 (80090003) Bad Key. -2146893820 (80090004) Bad Length. -2146893819 (80090005) Bad Data. -2146893818 (80090006) Invalid Signature. -2146893817 (80090007) Bad Version of provider. -2146893816 (80090008) Invalid algorithm specified. -2146893815 (80090009) Invalid flags specified. -2146893814 (8009000A) Invalid type specified. -2146893813 (8009000B) Key not valid for use in specified state. -2146893812 (8009000C) Hash not valid for use in specified state. -2146893811 (8009000D) Key does not exist. -2146893810 (8009000E) Insufficient memory available for the operation. -2146893809 (8009000F) Object already exists. -2146893808 (80090010) Access denied. -2146893807 (80090011) Object was not found. -2146893806 (80090012) Data already encrypted. -2146893805 (80090013) Invalid provider specified. -2146893804 (80090014) Invalid provider type specified. -2146893803 (80090015) Provider's public key is invalid. -2146893802 (80090016) Keyset does not exist. -2146893801 (80090017) Provider type not defined. -2146893800 (80090018) Provider type as registered is invalid. -2146893799 (80090019) The keyset is not defined. -2146893798 (8009001A) Keyset as registered is invalid. -2146893797 (8009001B) Provider type does not match registered value. -2146893796 (8009001C) The digital signature file is corrupt. -2146893795 (8009001D) Provider DLL failed to initialize correctly. -2146893794 (8009001E) Provider DLL could not be found. -2146893793 (8009001F) The Keyset parameter is invalid. -2146893792 (80090020) An internal error occurred. -2146893791 (80090021) A base error occurred. -2146762751 (800B0001) The specified trust provider is not known on this system. -2146762750 (800B0002) The trust verification action specified is not supported by the specified trust provider. -2146762749 (800B0003) The form specified for the subject is not one supported or known by the specified trust provider. -2146762748 (800B0004) The subject is not trusted for the specified action. -2146762747 (800B0005) Error due to problem in ASN.1 encoding process. -2146762746 (800B0006) Error due to problem in ASN.1 decoding process. -2146762745 (800B0007) Reading / writing Extensions where Attributes are appropriate, and visa versa. -2146762744 (800B0008) Unspecified cryptographic failure. -2146762743 (800B0009) The size of the data could not be determined. -2146762742 (800B000A) The size of the indefinite-sized data could not be determined. -2146762741 (800B000B) This object does not read and write self-sizing 。 -2146762496 (800B0100) No signature was present in the subject. -2146762495 (800B0101) A required certificate is not within its validity period. -2146762494 (800B0102) The validity periods of the certification chain do not nest correctly. -2146762493 (800B0103) A certificate that can only be used as an end-entity is being used as a CA or visa versa. -2146762492 (800B0104) A path length constraint in the certification chain has been violated. -2146762491 (800B0105) An extension of unknown type that is labeled 'critical' is present in a certificate. -2146762490 (800B0106) A certificate is being used for a purpose other than that for which it is permitted. -2146762489 (800B0107) A parent of a given certificate in fact did not issue that child certificate. -2146762488 (800B0108) A certificate is missing or has an empty value for an important field, such as a subject or issuer name. -2146762487 (800B0109) A certification chain processed correctly, but terminated in a root certificate which isn't trusted by the trust provider. -2146762486 (800B010A) A chain of certs didn't chain as they should in a certain application of chaining.