У меня есть приложение VBA, разработанное в Excel 2007, и оно содержит следующий код для доступа к функции ShellExecute
от Shell32.dll
:
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 отдельные версии моего приложения, если вообще возможно).
Однако, по словам Дэвида ниже, я ошибся в обстоятельствах, в которых мой оператор Declare
не работает. Единственными обстоятельствами, при которых он не будет работать, является 64-разрядная версия Microsoft Office для 64-разрядной версии Windows. Таким образом, Office 2007 не является проблемой.