2009-11-26 96 views
0

我正在使用MS Visual Studio 2008編程一個vsto插件與VB.NET中的自動插件相結合。 自動插件在excel中激活並在系統中註冊。基本上自動加載運行得很好,當你調用與Excel自動化功能問題

"=<function-name>(<argument1>;<argument2>;...;<argument-n>)"

功能通過它寫入Excel單元格或使用functionwizard。

vsto加載項用於通過命令行按鈕啓動一個窗口窗體,用戶可以在窗體窗體中輸入需要的參數。如果用戶完成一個字符串將被寫入單元格builded和看起來像上面寫的例子。

我與之戰鬥的問題是,當用戶啓動excel時,只需使用windows-form生成字符串並單擊「ok」來填充單元格,excel就會嘗試查找「 =「在單元格中,但沒有找到它。 單元終於站在Name?,因爲在查看函數嚮導列表後,我的註冊函數消失了(順便說下,外接程序仍然在「extra-> add-ins」下列出,並且在下一個excelstart之後再次加載)

但是另一方面,如果用戶第一次使用函數嚮導來獲取函數的值,在單元格中單手輸入它,或者甚至打開函數嚮導並在打開後直接關閉它,而不使用函數,我的窗口形式生成的字符串不起作用。

的onButtonClick事件進行下面的示例代碼:

Me.Application.ActiveCell.Value = "=FUNCTION(""value1"";""value2"")"

所以現在我的問題是,爲什麼是自動化功能disapearing當用戶只需要使用字符串發電機在第一?

一些建議,甚至解決方案,我的問題將是非常好的。

問候馬丁

回答

0

好吧,

搜索,沒有成功的其他代碼測試一週後,我發現我自己我的問題的原因。我不知道爲什麼excel將功能踢出列表,但下面的解釋將解決問題。

我做了2個錯誤試圖通過代碼調用該函數。首先是我選擇了寫入單元格的錯誤方法......只是使用「me.application.activecell.formula」。

第二個也是最重要的原因是真正的原因,整個事情都沒有奏效。通過試圖設置每個參數,分號,括號等在一個字符串excel上讀取計算模式中的字符串,並在公式中以分號命中時出錯。這導致了一個comexception(HRESULT:0x800A03EC)說只是發生了故障。

excel missreads此時分號引發異常。無意中我發現解決方案將公式中的分號設置爲分隔參數。您只需將「」,「」寫入代碼而不是「;」。

如果我的解決方案可以幫助其他開發者解決同樣的問題,我很高興。

問候馬丁