首页 > 解决方案 > 如何更新为 32 位编写的 VBA 代码以同时使用 32 和 64?

问题描述

我正在尝试更新excel macro写入32 bit MS office以使用64 bit excel. 当我在64 bit.

此错误在 office 更新为64 bit. 该代码在32 bit. excel 启动文件夹中没有Pdfmaker.dot,Pdfmaker.xla文件,我们也不使用 Norton。

我是这方面的新手,谁能帮我更改代码以同时32 bit使用64 bit.

这是我认为需要更新的模块 1 中的代码:

Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

标签: excelvba

解决方案


如果只是Sleep那么使用这个

Declare PtrSafe Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 

更多信息在这里

更新

条件编译

如果您的代码需要在 32 位和 64 位 Excel 上运行,那么要做的另一件事是将条件编译添加到您的 VBA。

Microsoft 设计了两个编译常量来处理这个问题:

VBA7:如果您使用的是 Office 2010,则为 True,旧版本为 False

WIN64:如果您的 Office 安装是 64 位,则为真,对于 32 位,则为假。

由于 64 位声明也适用于 32 位 Office 2010,因此您只需测试 VBA7:

#If VBA7 Then
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
    Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
#End If

仅当您的代码需要在 2010 之前的 Excel 版本上运行时才需要这样做。


推荐阅读