Удалить путь надстройки из UDF в формуле Excel - PullRequest
3 голосов
/ 20 июня 2011

Мой аддин был xla, теперь я использую excelDNA, поэтому он становится xll, Когда я открываю электронную таблицу, созданную в предыдущей версии My addin, для UDF он показывает myUDF с путем xla. например, "C: \ Program Files \ Папка установки \ MyUDFs.xla! MyUDF", когда я нажимаю ссылку «Изменить» и меняю источник на «C: ... \ MyUDFs.xll» Я получил всплывающее окно, которое говорит «Excel не может обновить одну или несколько ссылок в этой книге. Чтобы обновить ссылки, откройте все исходные файлы ссылок (нажмите« Редактировать ссылки »на вкладке« Данные »). Чтобы быть уверенным, все расчеты обновлены. нажмите F9 " Я нажимаю OK, затем путь MyUDF меняется с xla на xll, например C: \ Program Files \ Папка установки \ MyUDFs.xll! MyUDF Для клиентов это сломает все их таблицы (может быть более 100), встроенные в предыдущую версию. Я знаю, что могу написать код VBA для удаления путей из всех MyUDF. но это не идеально, так как пользователи должны открывать электронную таблицу, помещать код в электронную таблицу и запускать.

Интересно, есть ли лучший / более удобный способ решения проблемы? спасибо

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Внутренне Excel хранит различную информацию для функции .xla и .xll.Это не так просто, так что вы можете создать .xll, который совместим с функциями, которые были введены в лист как функции в .xla.

Вы также можете увидеть, как Excel хранит эту информацию, немного покопавшись в файле .xmlx.

Это обсуждение Уилмотта может быть уместным: http://www.wilmott.com/messageview.cfm?catid=10&threadid=79763 В вашем случае лучшийЯ могу предложить добавить макрос преобразования в ваш .xll и попросить пользователя нажать кнопку «Исправить», когда они открывают электронные таблицы, которые еще не были преобразованы.

0 голосов
/ 17 июня 2015

Это решение, которое я использую, наконец.Я сохраняю свой xla addin, в xll, я регистрирую тот же MyUDF с той же сигнатурой (в то время как почти те же дополнительные параметры не поддерживаются в xll, но используются в моем xla) и устанавливаю IsHidden = trueТаким образом, в списке функций вставки отображается только один MyUDF.Когда вы набираете = MyUDF и щелкаете по мастеру функций, версия в xll отображается в окне аргументов функции.В Excel 2007, когда я набираю = MyUDF, в раскрывающемся списке нет функции.В Excel 2010, когда я печатаю = MyUDF, появляется раскрывающийся список.Таким образом, решение работает лучше в Excel 2010.

...