如何使 VBA 代码与 64 位 Excel 兼容?

How to make VBA code compatible with 64-bit Excel?

我有一个 excel 运行 VB 代码,32 版本似乎没问题,现在我在 Office 2016 中测试时出现以下错误

The code in this project must be updated for use on 64-bit systems

因为我不擅长 vb 我在更新代码时遇到了问题。这是我下面的代码以及如何更新它以实现 64 位兼容性,

Declare Function GetSystemDirectory Lib "kernel64" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
'a  íÌÈ Ãí íßæä åäÇß ÌÏæá Úáì ÞÇÚÏÉ ÇáãÚáæãÇÊ ÈÅÓã
'a QtrDate
Global G_SystemPath As String

Function L_FileExist(L_FName As String) As Boolean
'a chick if the file given is found or not
'a input File Name
'a Output
'a   True : if found
'a   False : if not found
   L_FileExist = Not (Trim(Dir(L_FName)) = "")
End Function
Public Function GetWindowsSysDir() As String
    Dim strBuf As String
    strBuf = Space$(250)
    If GetSystemDirectory(strBuf, 250) Then
        GetWindowsSysDir = StringFromBuffer(strBuf)
        AddDirSep GetWindowsSysDir
    End If
End Function

Public Function StringFromBuffer(Buffer As String) As String
    Dim nPos As Long
    nPos = InStr(Buffer, vbNullChar)
    If nPos > 0 Then
        StringFromBuffer = Left$(Buffer, nPos - 1)
    Else
        StringFromBuffer = Buffer
    End If
End Function

Public Sub AddDirSep(strPathName As String)
    strPathName = RTrim$(strPathName)
    If Right$(strPathName, 1) <> "\" Then
        strPathName = strPathName & "\"

    End If
End Sub


Sub L_Secrit()
G_SystemPath = GetWindowsSysDir
If L_FileExist(G_SystemPath & "MSAYAR.DLL") Then
    Sheet1.Cells(400, 2) = " "
    Sheet1.Cells(401, 2) = " "
    Sheet1.Cells(402, 2) = " "

第一行应该是

#if VBA7 then
   Declare PtrSafe Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
#else
   Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
#end if

这里是 nice resource 查找 64 位 Win32API 调用。