1

我想写一些特定于 Excel 64 位的宏。下面的链接说的是一个宏, http: //msdn.microsoft.com/en-us/library/office/gg264421.aspx

但它说“#if Win64”:它是否引用了办公版本..?因为用户可以在 Windows 64 位操作系统中安装 Office 32 位 2010。

4

1 回答 1

1

但它说“#if Win64”:它是否引用了办公版本..?因为用户可以在 Windows 64 位操作系统中安装 Office 32 位 2010。

#If...then...#Else 中使用的 Win64 常量是编译器常量。如果返回 true,则表明开发环境是 64 位兼容的。这意味着为 32 位环境编写的代码可能存在问题。

通常,您可能会在 32 位 VBA 和 64 位 VBA 之间遇到的唯一冲突是您尝试通过 Declare 调用外部 Dll。如您提供的链接中所述,主要的潜在问题是:

在 64 位 Office 中运行旧 VBA 代码的问题是尝试将 64 位加载到 32 位数据类型中会截断 64 位数量。这可能会导致内存溢出、代码中出现意外结果以及可能的应用程序故障。

可能您的旧代码仍然可以工作,但您会进行调整以确保它可以工作。

处理此问题的方法在您提供的链接中进行了描述,您在该链接中使用编译器常量在 #If...then...#Else 结构中提供了正确的 64 位调用方法。

于 2012-10-29T16:07:57.010 回答