簡體   English   中英

如何停止Excel存儲XLA的絕對路徑?

[英]How to stop Excel storing the absolute path to an XLA?

我有一個XLA文件,將作為Excel加載項部署到組織中的許多用戶。 我的目的是將其部署到“Application Data \\ MyCompany”中用戶的“文檔和設置”文件夾中的目錄。 (事實上​​,這一切都是通過一個包裝器來完成的,該包裝器在本地復制最新版本的XLA並將其安裝為Excel加載項)。

但是,如果用戶創建引用此XLA中定義的函數的工作表,則Excel似乎在函數調用中存儲XLA的絕對路徑。 因此,如果用戶將工作表發送給同事,則Excel無法解析該功能,因為他們的XLA副本位於不同的絕對路徑上(因為他們的用戶名是絕對路徑的一部分)。

到目前為止,我的信念是Excel“只是應對”,只要XLA作為插件安裝,但事實並非如此。

是否真的需要為所有用戶強制執行加載項的相同絕對路徑? 這在單個組織中是可能的,但我真的不能相信這是真的,因為它嚴重阻礙了XLS文件的共享。

謝謝。

沒有好辦法做到這一點。 我將我的xla文件放在網絡共享而不是本地,並通過UNC路徑安裝它們。 這只對我有用,因為每個人都可以訪問共享,這可能不是你的情況。 這是其他一些選擇

http://www.dailydoseofexcel.com/archives/2008/06/02/fixing-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

我所做的就是如果我給用戶一個XLS,它在open事件中有一些代碼 - 安裝XLA作為其on open事件的一部分。 它還卸載舊版本(刪除和命令欄)。 這種自我分配。 理論上它可以清理任何路徑。 這假設每個人都可以訪問一些共享驅動器,這可以防止他們將XLA復制到本地驅動器。 或者通過電子郵件向他們發送共享驅動器上XLA和XLA的快捷方式。 如果可能,您不希望在本地驅動器上使用XLA。

如果XLA必須在本地驅動器上 - 不確定這是否可行但是打開事件上的XLS可以檢查修復任何路徑並安裝/安裝xla - 如果它知道它在哪里。 但是,如果您通過互聯網向XLS發送電子郵件,則XLS的on open事件可以檢查XLA是否可用並設置一個消息框告訴用戶該做什么 - 安裝此xla,這將是一個單獨的附件。 作為公開活動的一部分,XLA可以清理任何路徑 - 只是一些想法。

另一種可能性是XLA on open事件可以修改open事件上的XLS,這樣如果XLS被分發,XLS將能夠檢查XLA是否可用。 棘手。

你能指定一個基於環境變量的路徑嗎? 例如%APPDATA%\\MyCompany

這是一個糟糕的疏忽,使加載項幾乎無法管理共享。 除此之外,使用.XLAM加載項是一種避免使用支持宏的電子表格的好方法(共享電子表格可以在沒有宏的情況下分發,宏可以駐留在.XLAM中)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM