Как остановить Excel, хранящий абсолютный путь к XLA?

StackOverflow https://stackoverflow.com/questions/3308450

  •  26-09-2020
  •  | 
  •  

Вопрос

У меня есть файл XLA, который должен быть развернут нескольким пользователям в организации в качестве надстройки Excel. Мое намерение состоит в том, чтобы развернуть его в каталог в папке «Документы и настройки пользователя» в «Данные приложения \ MyCompany». (На самом деле это все работает через обертку, которая копирует последнюю версию XLA локально и устанавливает его в качестве дополнения Excel).

Однако, если пользователь создает лист, который ссылается на функцию, определенную в этой XLA, затем Excel, отображается для хранения абсолютного пути XLA в вызове функций. Таким образом, если пользователь отправляет лист в коллегу Excel, не может разрешить функцию, поскольку их копия XLA находится на другом абсолютном пути (поскольку их имя пользователя является частью абсолютного пути).

Мое убеждение до сих пор было Excel «просто справиться» с этим, пока XLA был установлен как дополнение, но это не так, кажется, не так.

Это действительно тот случай, когда мне нужно обеспечить идентичный абсолютный путь для моего дополнения для всех пользователей? Это возможно в одной организации, но я, честно говоря, не могу поверить, что это правда, так как он серьезно препятствует обмену файлов XLS.

спасибо.

Это было полезно?

Решение

Там нет хорошего способа сделать это.Я поставил свои файлы XLA на долю сети, а не локально и устанавливать их через путь UNC.Это только работает для меня, потому что у каждого есть доступ к доли, что может быть не так для вас.Вот некоторые другие альтернативы

http:// www.dailydoseofexcel.com / Архивы / 2008/06/02 / Cificing-Links-to-udfs-in-addins /

Другие советы

Я просто удаляю путь с подпунктом, как этот:

Sub RemoveXlaPath()
'
' Goal: delete the path reference to the add-in, i.e. everything before and including the '!'
' ='C:\Program Files (x86)\Microsoft Office\Office14\LIBRARY\populator.xlam'!famedata(...)
'
    Cells.Replace What:="'C:\*xla*'!", Replacement:="", _
                    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
                    SearchFormat:=False, ReplaceFormat:=False
End Sub
.

Можете ли вы указать путь на основе переменной среды?Например.%APPDATA%\MyCompany

Что я сделал, если я даю пользователя XLS, он имеет в своем открытом событии какой-то код, который - устанавливает XLA как часть его на открытом событии. Он также удаляет старую версию, если таковые имеются (удаление и командные стержни). Это самостоятельно распределяет. Теоретически это может убрать любые пути. Это предполагает, что есть какой-то общий диск, который каждый может получить доступ, это предотвращает их копирование XLA на локальный диск. В качестве альтернативы отправьте им ярлык к XLA с XLA на общем диске. Если возможно, вы не хотите, чтобы XLA на локальном диске.

Если XLA должен быть на локальном диске - не уверен, что будет работать, но XLS на открытом событии может проверить исправить любые пути и установить / установить XLA - если он знает, где его есть. Но если вы отправляли по электронной почте XLS через Интернет, в Open событие XLS может проверить, доступен ли XLA и выдвигайте окно сообщения, сообщив пользователя, что делать - установить эту XLA, которое было бы отдельное вложение. XLA может убрать любые пути как часть его на открытом событии - просто некоторые идеи.

Другая возможность - это XLA On Open Event может изменять XLSS на открытом событии, чтобы, если это распределено XLS, XLS сможет проверить, доступна ли XLA. Хитрый.

It's a poor oversight that makes add-ins barely manageable for shared use. Other than this, using .XLAM add-ins is a good way to avoid having to have macro-enabled spreadsheets (the shared spreadsheet can be distributed without macros and the macros can reside in an .XLAM)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top