我有一个在Excel 2007中开发的VBA应用程序,其中包含以下代码,允许访问Shell32.dll
中的ShellExecute
函数:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
我最开始说:
显然,该应用程序无法在64位的Windows上编译(仍在使用32位的Office 2007)。我猜想这是因为
Declare
声明需要更新。我读到Office 2010引入了一个新的VBA运行时(VB7),它具有一些新关键字,可以在
Declare
语句中使用以使其在64位Windows上正常工作。VB7还有新的预定义编译器常量,支持条件编译,其中将使用旧版或新版声明,取决于应用程序是否在32位或64位Windows上运行。但是,由于我被困在Office 2007中,我需要另一种解决方案。我的选择是什么?(如果可能的话,我真的不想发布2个单独的应用程序版本)。
但是,根据下面David的答案,我的假设是错误的,导致Declare
语句不能工作的情况只有Office 2010 64位在Windows 64位上。因此,Office 2007不是问题。
#if Win64
。如果只是为了使旧的电子表格在64位机器上工作并强制使用VB7,则不需要使用该指令。根据文档,32位Office 2010有意与所有遗留的VB6电子表格兼容,无需进行任何修改。 - Alain