Excel自动化功能的问题

时间:2009-11-26 16:37:45

标签: vb.net excel function automation add-in

我正在使用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"")"

所以现在我的问题是,当用户最初使用字符串生成器时,为什么自动功能会消失呢?

一些建议甚至是解决方案,我的问题会非常好。

问候马丁

1 个答案:

答案 0 :(得分:0)

正常的,

经过一周的搜索和测试其他代码没有成功,我找到了我自己的问题的原因。我不知道为什么excel将该功能从列表中删除,但以下解释确实可以解决问题。

我尝试通过代码调用函数时犯了两个错误。首先是我选择了错误的写入单元格的方法......只需使用“me.application.activecell.formula”。

第二个也是最重要的原因是真正的原因,整个事情都没有用。通过尝试在一个字符串上设置每个参数,分号,括号等excel在计算模式下读取字符串,并且当它碰到公式中的分号时出错。这导致了一个恶意(HRESULT:0x800A03EC),说只是发生了一次失败。

excel在这一点上错过了分号,抛出一个异常。偶然我发现解决方案将分号设置为公式以分隔参数。您只需将“ ”,“ ”写入代码而不是“ ; ”。

如果我的解决方案可以帮助其他开发人员遇到同样的问题,我很高兴。

问候马丁