Я уже сталкивался с этой проблемой на людях, использующих мои собственные инструменты на новых 64-разрядных компьютерах с Office 2010.
все, что мне нужно было сделать, это изменить строки кода следующим образом:
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
К этому:
#If VBA7 Then
Private Declare PtrSafe 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
#Else
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
#End If
Вы, конечно, захотите убедиться, что используемая вами библиотека доступна на обеих машинах, но пока ничего из того, что я использовал, не было проблемой.
Обратите внимание, что в старом VB6 PtrSafe даже не является допустимой командой, поэтому она будет отображаться красным цветом, как будто у вас есть ошибка компиляции, но на самом деле она никогда не выдаст ошибку, потому что компилятор пропустит первая часть блока if.

Приложения, использующие приведенный выше код, прекрасно компилируются и работают в 32 и 64-разрядных версиях Office 2003, 2007 и 2010.