我正在使用MS Visual Studio 2008编写一个vsto加载项和VB.NET中的自动化加载项。 自动化加载项在Excel中激活并在系统中注册。当你用
调用函数时,基本上自动化加载项运行得很好 "=<function-name>(<argument1>;<argument2>;...;<argument-n>)"
将其写入excel单元格或使用函数向导。
vsto加载项用于通过命令栏按钮启动windows-form,用户可以在其中键入所需的参数。如果用户已经完成了一个字符串,则会在构建的单元格中写入,看起来就像上面写的那样。
我正在与之斗争的问题是当用户启动excel时,只需使用windows-form生成字符串并单击“ok”以用它填充单元格,excel尝试找到函数原因“= “在牢房中,但没有找到它。
在单元格中最终代表Name?
,因为在查看functionwizard-list之后,我的注册函数消失了。(顺便说一句,加载项仍然列在“extra-&gt; add-ins”下面,并且在之后再次加载下一个excelstart)
但另一方面,如果用户首先使用函数向导来获取函数的值,在单元格中每手键入它,甚至只需打开函数向导并在打开后直接关闭它而不使用函数,我的窗口 - 表单生成的字符串确实有效。
onButtonClick事件执行以下示例代码:
Me.Application.ActiveCell.Value = "=FUNCTION(""value1"";""value2"")"
所以现在我的问题是,当用户最初使用字符串生成器时,为什么自动功能会消失呢?
一些建议甚至是解决方案,我的问题会非常好。
问候马丁
答案 0 :(得分:0)
正常的,
经过一周的搜索和测试其他代码没有成功,我找到了我自己的问题的原因。我不知道为什么excel将该功能从列表中删除,但以下解释确实可以解决问题。
我尝试通过代码调用函数时犯了两个错误。首先是我选择了错误的写入单元格的方法......只需使用“me.application.activecell.formula”。
第二个也是最重要的原因是真正的原因,整个事情都没有用。通过尝试在一个字符串上设置每个参数,分号,括号等excel在计算模式下读取字符串,并且当它碰到公式中的分号时出错。这导致了一个恶意(HRESULT:0x800A03EC),说只是发生了一次失败。excel在这一点上错过了分号,抛出一个异常。偶然我发现解决方案将分号设置为公式以分隔参数。您只需将“ ”,“ ”写入代码而不是“ ; ”。
如果我的解决方案可以帮助其他开发人员遇到同样的问题,我很高兴。
问候马丁