将Excel宏从32位转换为64位
我有一个相当大的32位excel宏,需要转换为使用64位的n excel。有没有一种简单的方法来进行这种转换? 这是一个大宏,无法逐行转换 我已经包含了下面的部分代码将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-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似乎工作得很好。请把它放在答题箱里,我接受。谢谢