Я разрабатываю надстройку Excel VBA (* .xlam), которая определяет как ленту (customUI), так и пользовательские функции. Эта надстройка теперь распространяется среди моих коллег и на каждом P C, хранящемся в папке (конечно, индивидуально)
C:\Users\<username>\AppData\Roaming\Microsoft\Excel\XLSTART
. Это отлично работает, и надстройка полностью функциональна (лента и UDF) ) как таковой для всех пользователей, даже для совместного использования файлов с использованием UDF.
Однако для одного пользователя (итальянская установка, но в остальном, похоже, такая же, как и у любого другого), мы видим следующее:
Загрузка файла, который был создан на другом компьютере, изменяет UFD на абсолютный путь (путь действительно правильный):
='C:\Users\...\XLSTART\<addinname>.xlam'!myfunc(B128, C34)
UDF не оценивает, но выдает ошибку #NAME
.
Замена всех 'C:\Users\...\XLSTART\<addinname>.xlam'!
пустыми строками во всех формулах делает UDF найденными и работающими.
Использование UDF в новых формулах, конечно же, тоже работает.
Мое подозрение следующее: Excel считает по необъяснимой причине, что UDF происходят из другой надстройки, но находятся в t он же расположение файла. Но поскольку xlam
-файл уже открыт, он заблокирован для повторного открытия.
Mr. Google довольно нечетко на этот счет. Я видел это: Как сделать переносимый вызов XLAM UDF? , но в моем случае путь определенно не сохраняется в электронной таблице. Данный ответ, в частности,
Добавьте код в XLAM, который проверяет ссылки для каждой открытой книги, и если ссылка указывает на ваш XLAM, но по другому пути, он выполняет поиск и замену, чтобы путь исправлен.
все еще возможно, но я нахожу это таким взломом и надеюсь, что есть более легкое решение, и по опыту он укусит меня в ответ, если я не пойму, что вызывает это поведение.
Моя цель - естественно развернуть программное обеспечение таким образом, чтобы пользователи не наблюдали подобных проблем при совместном использовании файлов с использованием UDF этой надстройки.
Заявитель : Я смогу исследовать этот вопрос дальше на P C моего коллеги, но это может занять пару дней. Пожалуйста, не интерпретируйте это как безразличие. Кроме того, надстройка большая и внутренняя. Я с трудом могу сгенерировать mcve или что-то подобное.