Добрый день. Тема избитая, но запустить GetMem на 64-разрядном офисе не получается. Нужно, чтобы заработала, например, такая конструкция:
Код
Dim SA_addr as Long, Arr()
Arr=Array(1,2,3)
'получить адрес структуры SAFEARRAY массива Arr
GetMem4 ArrPtr(Arr), SA_addr
Декларации для 32р такие:
Код
Private Declare Function ArrPtr Lib "msvbvm60" Alias "VarPtr" (Arr() As Any) As Long
Private Declare Function GetMem4 Lib "msvbvm60" (ByVal SrcAddr As Long, ByRef Dst_varName As Long) As Long
То есть как использовать WinAPI функции в 64бит офисе? Тут бы вы много чего бы нашли. Перейдите по ссылке выше, прочитайте статью и скачайте файл с образцами оформления WinAPI функций в VBA7, найдите свои и используйте на здоровье.
Уважаемый ANik! Библиотека msvbvm60.dll в 64-разрядном исполнении "штатно" в составе Win10 и Office 64 не поставляется (по крайней мере, у нас ее нет, только 32-разрядный вариант). Не могли бы Вы дать ссылку на сайт Microsoft?
Библиотека msvbvm60.dll в 64-разрядном исполнении "штатно" в составе Win10 и Office 64 не поставляется
Отсутствие библиотеки не есть проблема, её можно скачать http://www.dlldownloader.com/msvbvm60-dll/ Только вопрос, как правильно описать параметры функций, чтобы можно было их вызывать? Ладно, тогда придётся использовать CopyMemory для этих целей.
Ситуация ещё усложняется тем, что я не могу попробовать у себя на компе всё это. Поставить одновременно и x86 и x64 версии офиса нельзя. Снёс х86, перезагрузился, а установщик х64 всё равно сообщает, что уже установлена 32-разрядная версия и не хочет устанавливать х64.
Да, все предлагаемые к скачиванию версии 32-разрядные, но это же не значит, что их нельзя запускать из 64-разрядного офиса? (я лично ещё пока не знаю, это моё предположение ) Пошла установка x64-го офиса (неанинсталлированный пакет совместимости мешал установщику запуститься). Буду пробовать....