将Excel MAcro从32位转换为64位

时间:2017-07-18 08:51:58

标签: excel vba

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

我已经包含了以下部分代码。

'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

1 个答案:

答案 0 :(得分:0)

归功于Gserg:

手动将PtrSafe添加到所有声明中。在表示LongPtrs指针的声明中手动转换所有Longs(在显示的代码中,这将只是pidl)。手动更新作为这些参数传递给LongPtr的过程中的Long变量的声明。别无他法。您可以尝试研究可以自动化替换程度的重构工具/插件。 - GSerg 7月18日8:55