Tag: 持久性

VBA:在Excel中创build会话持久对象(散列)

在VBA函数(UDF)中可以创build一个具有全局范围的对象吗? 即超越function的运行时间坚持? 我想把它粘在一个散列中,并且可以传递给其他函数。 我知道你可以在c#/ c ++ dll中做到这一点。 动机是一个沉重的处理,我不想重复数百个函数调用:我想caching结果,所以我只需要做一次。 假设我有一个在单元格A1中构build结果对象的UDF: =CreateResultsObject(arg1, arg2, arg3…) 该函数执行繁重的工作,并返回一个唯一的IDstring(存储在持久散列中的对象的键)。 单元格A1现在包含这个string值,然后我可以传递给其他函数:然后他们可以使用密钥访问散列中的caching对象。 这可能吗? 如果这样怎么样?

如何将信息存储在Excel WoorkBook中

我正在使用VS2008和VSTO(C#)在Office 2007上编写一个Excel插件。这个插件需要存储embeddedWookbook或embedded到Wookbook中的信息,以便在用户使用这种信息再次打开Wookbook时恢复某些状态。 在保存Wookbook之前,Addin以XML的forms序列化所有的信息,打开WoorkBook之后,Addin试图反序列化这些信息。 我试图使用Office.DocumentProperties,但每个string元素被截断 (最多256个字符) 在事件Excel.AppEvents_WorkbookOpenEventHandler和Excel.AppEvents_WorkbookBeforeCloseEventHandler : Office.DocumentProperties properties = (Office.DocumentProperties)this.Application.ActiveWorkbook.CustomDocumentProperties; properties.Add(Constants.ADDIN_PERSISTENCE, false, Office.MsoDocProperties.msoPropertyTypeString, serialize(configurationInstance), null); 在事件AppEvents_WorkbookOpenEventHandler : Office.DocumentProperties properties = (Office.DocumentProperties)Application.ActiveWorkbook.CustomDocumentProperties; Configuration configurationInstance = deserialize((string)properties[Constants.ADDIN_PERSISTENCE]); 但是这不起作用,因为序列化返回的string长度超过256个字符。 在其他的Addin中,通过Excel 2003,我将这些信息存储在第一个单元格的“非常隐藏”表单中,并且名字很奇怪。 我不知道是否有更好的解决scheme。 任何build议?