将Excel宏从32位转换为64位

将Excel宏从32位转换为64位,excel,vba,Excel,Vba,我有一个相当大的32位excel宏,需要转换为使用64位的n excel。有没有一种简单的方法来进行这种转换? 这是一个大宏,无法逐行转换 我已经包含了下面的部分代码 '32-bit API declarations Declare Function SHGetPathFromIDList Lib "shell32.dll" _ Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Lo

我有一个相当大的32位excel宏,需要转换为使用64位的n excel。有没有一种简单的方法来进行这种转换? 这是一个大宏,无法逐行转换

我已经包含了下面的部分代码

'32-bit API declarations
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
    Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Sub DisplayDirectoryDialogBox()
    Dim Msg As String
    FileCount = 0
    Msg = "Select a location containing the files you want to list."
    SelectedDir = GetDirectory(Msg)
    If SelectedDir = "" Then End
    With Application
        .StatusBar = "WAIT..."
        .ScreenUpdating = False
归功于Gserg:


手动将PtrSafe添加到所有声明中。手动转换声明中表示指向longptr的指针的所有long(在显示的代码中,这将只是pidl)。手动更新过程中作为这些参数传递给LongPtr的长变量声明。没有别的办法了。您可以尝试研究重构工具/加载项,这些工具/加载项可以在一定程度上自动化替换GSerg 7月18日8:55

手动将
PtrSafe
添加到所有声明中。手动转换声明中表示指向
LongPtr
s的指针的所有
Long
s(在显示的代码中,这将仅是
pidl
)。手动更新过程中
Long
变量的声明,这些变量作为这些参数传递给
LongPtr
。没有别的办法了。您可以尝试研究重构工具/加载项,它们可以在一定程度上自动化替换。谢谢。我会试试这个,然后告诉你。@GSerg似乎工作得很好。请把它放在答题箱里,我接受。谢谢