【发布时间】:2017-07-22 09:26:58
【问题描述】:
我有一个相当大的 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
【问题讨论】:
-
手动将
PtrSafe添加到所有声明中。在表示指向LongPtrs 的指针的声明中手动转换所有Longs(在显示的代码中,这将只是pidl)。在作为这些参数传递给LongPtr的过程中手动更新Long变量的声明。没有别的办法。您可以尝试研究可以在一定程度上自动化替换的重构工具/插件。 -
谢谢。我会试试这个,让你知道。
-
@GSerg 似乎工作正常。请把它放在答案框中,我接受它。谢谢。