Страницы: 1
RSS
Особенности использования надстроек (Add-inn's) в MS Excel 2016 и MS Excel 2021, некорректная работа REFPROP
 
Уважаемые коллеги!

На двух разных компьютерах были установлены разные версии MS Office: 2021Pro и 2016Pro. На обоих компах были проведены необходимые действия по установке внешней надстройки к Excel'ю (REFPROP.XLA), а именно: папка с надстройкой добавлена в перечень "надёжных расположений" в "центре управления безопасностью", там же включены макросы (отключенные по умолчанию), а также прописан путь и включена сам надстройка в Параметрах. После чего на обоих компах стали доступны функции надстройки (появляются пользовательские функции), однако, на 2021м офисе они работают корректно, а на 2016м возвращают ошибку #ЗНАЧ... Опыт личного использования данной надстройки на младших версиях офиса имеется, но, к сожалению, непосредственно запустить надстройку там сейчас нет возможности.

Нет ли у Вас идей что можно сравнить в настройках двух офисов, чтобы найти причину неисправности. Или, возможно, вы сами сталкивались с подобными проблемами и подскажите что можно поправить.

Заранее благодарен!
 
Цитата
IKor написал:
на 2021м офисе они работают корректно, а на 2016м возвращают ошибку #ЗНАЧ
Наиболее вероятно - эти UDF используют функционал, отсутствующий в 2016 офисе.
 
Возможно Вы правы, но я имел опыт работы с этой надстройкой и в прежних версиях MS Excel'я...

Сейчас я пытаюсь понять можно ли пошагово пройти по этапам вычисления "чужой" функции на VBA, чтобы увидеть в какой момент она возвращает ошибку в 2016м и что происходит в 2021м...

Есть ли такой инструментарий в VBA? Я не понимаю как можно принудительно начать выполняться пользовательскую функцию...
 
нужно у коде глазами найти эту функцию, поставить на ней точку останова (F9) и потом запустить расчёт (вызвать любым способом эту функцию) - макрос дойдёт до этой функции и остановится на точке останова, а дальше F8 - пошагово проходить
Изменено: New - 09.09.2022 16:11:24
 
Цитата
IKor написал:
Я не понимаю как можно принудительно начать выполняться пользовательскую функцию...
Вставить ее в ячейку листа и Enter, или даблклик и Enter
Было бы куда посмотреть (REFPROP.XLA), было бы о чем говорить. А так - сотрясание воздуха...
Изменено: RAN - 09.09.2022 16:15:31
 
Цитата
написал:
Было бы куда посмотреть (REFPROP.XLA
Мне не жалко - но без DLL-ки и библиотек свойств веществ она, видимо, работать не будет.
Программа полезная (кому надо), но платная. Найти её можно, например, на сайте разработчика https://refprop.software.informer.com/
 
Цитата
IKor написал:
Программа полезная (кому надо), но платная.
Т.е. код закрыт? Тогда вообще разговор ни о чем.
 
Цитата
написал:
код закрыт
Я не большой специалист, но какой-то код в VBA я вижу.

Хочу увидеть разницу на работающей и неработающей версиях
 
Увы
 
а если вы официально купили эту программу, то почему бы не написать разработчику - у меня вот такая ошибка в Office 2016 - как исправить?
 
Цитата
однако, на 2021м
В очередной раз убеждаюсь, что чем моложе версия офиса тем больше глюков
Имхо  в надстройке используется функция которая есть в 2021 офисе но нет в 2016
Цитата
2021м офисе они работают корректно, а на 2016м возвращают ошибку #ЗНАЧ
На какой функции ошибка?
Изменено: Александр Моторин - 09.09.2022 17:33:41
 
Цитата
RAN написал:
Увы
В свойствах файла REFPROP.XLA нужно поставить галочку "Разблокировать". Тогда файл открывается нормально. Проект не зашифрован.
Есть описания функций из пользовательских dll. Первым делом надо проверить, что разрядность dll соответствует разрядности MS Office.
Владимир
 
Цитата
написал:
разрядность dll соответствует разрядности MS Office.
Крайне интересно: я не знаю где посмотреть разрядность DLL, но надстройка "работает" с 64-разрядной версией офиса, и не работает с 32-разрядной :(
UPDATE: сам файл называется REFPROP64.DLL
Изменено: IKor - 09.09.2022 17:52:40
 
Цитата
IKor написал:
но надстройка "работает" с 64-разрядной версией офиса, и не работает с 32-разрядной
Любой .dll  файл имеет разрядность и не может обслуживать приложения другой разрядности (без специальных трюков). На сайте разработчика, вероятно, есть инсталляционные файлы для 32-разрядных приложений.
В интернете много сообщений на тему определения разрядности dll. В Вашем случае на разрядность намекает имя REFPRP64.DLL.  :)
Изменено: sokol92 - 09.09.2022 18:01:56
Владимир
 
Я нашел 32-битный DLL в своих старых письмах. скопировал его в папку и даже исправил в коде все REFPRP64.DLL на REFPROP.DLL.
А потом еще попытался зарегистрировать DLL в Windows при помощи regSVR32 >> но "Модуль... загружен, но точка входа DLLRegisterServer не найдена"
И результат отрицательный...
=========UPDATE
вероятнее всего проблема в том, что мой 32-битный DLL от старой (9й версии REFPROPа), а сейчас актуальна 10я, в которой были внесены множественные изменения...
Изменено: IKor - 09.09.2022 18:14:27
 
В коде из #6 ничего исправлять не надо: там содержится оператор условной компиляции, который все делает правильно.
У Вас dll лежит в том же каталоге, что и надстройка REFPROP.XLA (после всех манипуляций с регистрацией надстройки на компьютере)?

Код
  MsgBox Workbooks("REFPROP.xla").Path

(выполнить после загрузки надстройки).
Изменено: sokol92 - 09.09.2022 18:20:33
Владимир
 
Цитата
написал:
У Вас dll лежит в том же каталоге, что и надстройка REFPROP.XLA
Да, оба DLL лежат в одной папке
 
Цитата
sokol92 написал:
В свойствах файла REFPROP.XLA нужно поставить галочку "Разблокировать".
Был такой анекдот .
Амананга!
Страницы: 1
Наверх