【问题标题】:problem with Excel automation functionExcel自动化功能的问题
【发布时间】:2009-12-01 16:49:35
【问题描述】:

我正在使用 MS Visual Studio 2008 在 VB.NET 中编写一个与自动化插件相结合的 vsto 插件。 自动化插件在 excel 中激活并在系统中注册。基本上自动化插件运行得很好,当你用

调用函数时

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

通过将其写入 Excel 单元格或使用函数向导。

vsto 插件用于通过命令栏按钮启动窗口形式,用户可以在其中键入所需的参数。如果用户完成了一个字符串将被写入构建的单元格中,并且看起来像上面写的示例。

我正在解决的问题是当用户启动 excel 时,只需使用 windows-form 生成字符串并单击“确定”以填充单元格,excel 尝试查找“=”的功能原因“在牢房里,但没有找到。 单元格中终于出现Name?,因为在查看函数向导列表后,我注册的函数消失了。(顺便说一句,加载项仍然列在“extra->add-ins”下,并且在下一个 excelstart 后再次加载)

但是另一方面,如果用户首先使用函数向导来获取函数的值,在单元格中手动键入它,或者甚至只是打开函数向导并在打开后直接关闭它而不使用函数,我的 windows-表单生成的字符串确实有效。

onButtonClick 事件执行以下示例代码:

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

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

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

马丁你好

【问题讨论】:

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


    【解决方案1】:

    好的,

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

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

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

    此时excel误读分号并引发异常。偶然我找到了将分号设置到公式中以分隔参数的解决方案。您只需在代码中写入“”、“”而不是“;”。

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

    问候马丁

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2012-06-15
      • 2016-12-25
      • 2010-12-06
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      相关资源
      最近更新 更多