我正在使用VSTO创建Excel加载项。

我的计划是通过将它们序列化为字符串并将这些字符串分配为工作簿中的名称值来持续在Excel工作簿内的对象。

但是,当我调用API函数添加新名称时,我会从COM库中获得一个神秘的例外。

更确切地说,我在打电话

_app.ActiveWorkbook.Names.Add(name, value, true,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
            Type.Missing, Type.Missing, Type.Missing, Type.Missing);

在哪里

name = "an_object"

value = "TestTemplate|'Sheet1'!$A$1| 1Cube=(0,1):(1,2)| 2EntryNumber=(1,1):(2,2)| 3Description=(2,1):(3,2)| 4Group=(4,1):(5,2)| 5Repost=(3,1):(4,2)| 6Debit=(13,3):(16,4)| 7Credit=(13,2):(16,3)|Company=(6,1):(7,2)|Company Partner=(7,1):(8,2)|Time Monthly=(8,1):(9,2)|Currency=(9,1):(10,2)|Version=(10,1):(11,2)|Department=(13,0):(16,1)|Account=(13,1):(16,2)|"

一个假设是 value 字符串不符合可以存储在名称中的字符串(非法字符,太长等),但是我找不到有关限制的文档。

有人知道这里出了什么问题吗?

如果任何人想要的话,错误消息是 Exception from HRESULT: 0x800A03EC

非常感谢。

有帮助吗?

解决方案

仍然没有任何文档,但是某些反复试验表明我的序列化对象太长了。

其他提示

您是否尝试通过REF发送参数?例如 ...ref name, ref value, ...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top