这是一个将 Windows 错误编号转换为文本的函数。您可以使用返回值作为参数,并返回更友好的消息。
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, ByVal Arguments As Any) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Const FORMAT_MESSAGE_IGNORE_INSERTS = &H200
Private Const MAX_PATH = 260
Function TranslateDLLError(ByVal lngErrNum As Long) As String
Dim sRtrnCode As String * MAX_PATH
Dim lRet As Long
On Error GoTo errTranslateDLLError(
sRtrnCode = Space$(256)
lRet = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS, 0&, lngErrNum, 0&, sRtrnCode, Len(sRtrnCode), 0&)
If lRet > 0 Then
Translate_DLL_Error = Replace$(Left(sRtrnCode, lRet), vbCrLf, "")
Else
Translate_DLL_Error = "Error not found."
End If
Exit Function
errTranslateDLLError(:
TranslateDLLError( = "Unable to translate system error: " & CStr(lngErrNum)
End Function