2017-07-18 1302 views
0

我有一个非常大的用32位编写的excel宏,需要转换为使用n excel 64位。有没有简单的方法来做这种转换? 这是一个巨大的宏,不可能逐行转换。将Excel宏从32位转换为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 
+0

手动添加'PtrSafe'到所有声明。在表示'LongPtr'指针的声明中手动转换所有'Long'(在显示的代码中,这只是'pidl')。在作为这些参数传递给'LongPtr'的过程中手动更新'Long'变量的声明。没有别的办法。您可能试图查看重构工具/插件,可以在一定程度上自动执行替换。 – GSerg

+0

谢谢。我会试试这个,让你知道。 –

+0

@GSerg似乎工作正常。请把它放在答案框中,我接受它。谢谢。 –

回答

0

感谢Gserg:

手动添加PTRSAFE所有声明。在表示指向LongPtrs的声明中手动转换所有Long(在显示的代码中,这将只是pidl)。在作为这些参数传递给LongPtr的过程中手动更新Long变量的声明。没有别的办法。您可能试图查看重构工具/插件,可以在一定程度上自动执行替换。 - GSerg Jul 18 at 8:55