1

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

非常感谢。

4

2 回答 2

0

仍然没有任何文档,但是一些试验和错误表明我的序列化对象太长了。

于 2010-05-18T15:29:30.937 回答
0

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

于 2010-05-22T07:44:52.880 回答