32位PowerPoint宏无法在64位PowerPoint中运行的适配方案咨询
32位PPT图片尺寸调整宏适配64位Office操作步骤
注意:如果原有宏仅调用PowerPoint VBA原生对象(无外部Windows API调用、无32位专属ActiveX控件依赖),无需修改代码直接重新保存为64位可用的加载项即可正常运行。
第一步:导出原有32位宏源码
在安装了32位Office的设备上打开PowerPoint,点击「开发工具」选项卡,选择「宏」,找到对应图片调整工具的宏名称,点击「编辑」进入VBA编辑器,右键点击对应的宏模块,选择「导出文件」保存为.bas格式的源码备份文件。第二步:修正32位专属声明适配64位环境
打开导出的.bas源码文件,找到所有以Declare开头的Windows API调用语句,做以下修改:- 给所有
Declare关键字前添加PtrSafe标识,标记该声明兼容64位环境 - 将所有用于存储句柄、内存指针的
Long类型替换为LongPtr类型 - 若存在包含指针成员的自定义Type类型,同步将对应成员的
Long类型替换为LongPtr
示例修改参考:
32位专属原声明:Declare Function GetClientRect Lib "user32.dll" (ByVal hWnd As Long, lpRect As RECT) As Long
修改后兼容64位的声明:Declare PtrSafe Function GetClientRect Lib "user32.dll" (ByVal hWnd As LongPtr, lpRect As RECT) As Long
- 给所有
第三步:(可选)添加条件编译实现双环境兼容
若需要该加载项同时适配32位和64位Office环境,可添加VBA条件编译指令,示例如下:#If VBA7 Then Declare PtrSafe Function GetClientRect Lib "user32.dll" (ByVal hWnd As LongPtr, lpRect As RECT) As Long #Else Declare Function GetClientRect Lib "user32.dll" (ByVal hWnd As Long, lpRect As RECT) As Long #End If第四步:功能测试验证
在安装了64位Office的设备上打开PowerPoint,进入VBA编辑器,右键点击项目的「模块」文件夹选择「导入文件」,上传修改后的.bas源码文件。插入多张不同尺寸的测试图片,运行宏校验图片尺寸调整逻辑是否正常、排版规则是否和原有32位版本完全一致。第五步:打包部署新加载项
测试无误后,将当前包含修改后宏的文件保存为.ppam格式的PowerPoint加载项,替换员工设备上原有32位版本即可完成适配。
内容的提问来源于stack exchange,提问作者Fergus Hudsmith
相关产品推荐
相关产品推荐

