這篇文章是關於在不創建鏈接的情況下安裝XLAM的。 (每個人都討厭鏈接)。考慮瑣碎的插件:XLAM/XLA Addins:有更好的方法嗎?
Public Function UDF_HELLO(x)
UDF_HELLO = "Hello " & x
End Function
把這段代碼並沒有別的成模塊,並保存爲桌面上的「Hello.xlam」(而不是默認的加載項擅長文件夾)。接下來,當HELLO.XLAM仍然是開放的,創建一個新的工作簿XLSX用公式
=UDF_Hello("world")
在單元格A1,它只是在單元格顯示「Hello World」。保存該工作簿並退出Excel。現在,如果您在沒有XLAM的情況下重新打開工作簿,Excel會抱怨「與其他源的鏈接...」。無論您單擊「更新」或「不更新」,Excel將裂傷單元格A1的公式是這樣的:
='C:\Documents and Settings\tpascale\Desktop\Hello.xlam'!UDF_Hello("world")
很多時候,這種「強制聯動」是不可取的。在我的計算環境中有很多臨時分析,在我們一起解決當前問題的每個XLAM上實施安裝方案是沒有意義的。我只是想將XLAM文件分發給用戶,並讓用戶在需要時打開它們,而不必擔心導致其公式被破壞的絲毫錯誤步驟。
問題:
有沒有一種方法來指示Excel以NEVER構建UDF的外部鏈接,並簡單地,如果他們加載以其它方式使用UDF和返回#VALUEs?
我知道如何使COM可見功能在VB.Net或C#。這些可以從VBA中調用,但不能從配方欄中調用。從公式欄中調用它們的絕對最簡單的方法是什麼?它是你的Excel-DNA還是別的什麼? Visual Studio在生成所有COM-interop內容方面做得很好 - 但據我所知,並不會爲你產生任何東西w.r.t. excel插件。 – tpascale 2011-04-19 21:21:40
假設最簡單(也是唯一的MS支持的)將.NET函數作爲UDF提供給Excel的方法是創建一個自動化加載項:http://www.codeproject.com/KB/COM/excelnetauto.aspx。但是自動化加載項很慢,需要在機器上註冊,並且對添加功能描述,類別等方面的支持有限.Excel-DNA解決了所有這些問題,讓您只需一個.xll,無需安裝,用戶可以只需點擊打開。如果你已經安裝了Visual Studio,並且知道屬性是什麼,你會發現Excel-DNA易於使用並且可以正常工作。 – Govert 2011-04-20 08:44:47
好的很多謝謝 - 我會嘗試Excel DNA。我快速瀏覽了你的「Excel DNA Hello World功能」 - 非常好。理想情況下,我只是將VBA代碼包裝在DNA XML中,沒有IDE - 非常簡單 - 除了我的UDF依賴於VBA類。那些也可以用這種非常輕巧的方式包裹起來?如果是的話,很好,如果不是的話,我可能會咬緊牙關,用DNA轉換成.NET。 – tpascale 2011-04-20 14:49:22