访问 x64 VBA - 尝试从 user32.dll 加载字符串时获取 ERROR_RESOURCE_DATA_NOT_FOUND

Access x64 VBA - Getting ERROR_RESOURCE_DATA_NOT_FOUND when trying to load string from user32.dll

我正在尝试在 Access 2016 x64 中加载本地化的按钮标题,它们位于 user32.dll。

奇怪的是,在另一台安装了 Access 2010 x86 的机器上,代码运行完美。

代码如下:

Option Compare Database
Option Explicit

Private Declare PtrSafe Function LoadString Lib "user32" Alias "LoadStringA" ( _
    ByVal hInstance As Long, _
    ByVal uID As Long, _
    ByVal lpBuffer As String, _
    ByVal nBufferMax As Long) _
    As Long

Private Declare PtrSafe Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
    ByVal lpFileName As String) _
    As Long

Private Enum CAPTION
    OK_CAPTION = 800
    CANCEL_CAPTION = 801
    ABORT_CAPTION = 802
    RETRY_CAPTION = 803
    IGNORE_CAPTION = 804
    YES_CAPTION = 805
    NO_CAPTION = 806
    CLOSE_CAPTION = 807
    HELP_CAPTION = 808
    TRYAGAIN_CAPTION = 809
    CONTINUE_CAPTION = 810
End Enum

Private Const lPath As String = "user32.dll"
Private Const BufferMax As Long = 256
Private Const cIndex As Long = CAPTION.OK_CAPTION

Private Sub cmdGetCaptionById_Click()
    Dim Buffer As String * BufferMax
    Dim Instance As Long
    Dim sLen As Long
    Instance = LoadLibrary(lPath)
    sLen = LoadString(Instance, cIndex, Buffer, BufferMax)
    If sLen <> 0 Then
        Caption = Left(Buffer, sLen)
        MsgBox Caption, vbInformation
    Else
        MsgBox "No caption found, error " & Err.LastDllError, vbCritical
    End If
End Sub

我无法进入 if 块,就像他没有找到字符串表一样。
详细错误:

ERROR_RESOURCE_DATA_NOT_FOUND
1812 (0x714)
The specified image file did not contain a resource section.

预期的字符串输出,基于 cIndex(在本例中,OK_CAPTION,其 ID = 800):

Caption = "Ok"

非常感谢您的帮助!

LoadLibrary 应该 return 一个 LongPtr 而不是 Long.
因此,ByVal hInstance As LongPtr 而不是 ByVal hInstance As Long
最后 Dim Instance As LongPtr 而不是 Dim Instance As Long.
希望这会对某人有所帮助!