2011-06-16 60 views
5

你确实有人知道在工作表对象本身内存储对象的方法吗?或者我们必须序列化并将其保存为自定义属性?我想存储的数据并不是真的想坐在一张纸上。将对象存储在Excel工作表中?

+0

在Excel/VBA中没有内置工具。如果你不想使用(隐藏)工作表,那么你只能存储在工作簿/工作表名称等地方,并且这个空间非常有限,除非你愿意尽可能多地分割内容名... – 2011-06-16 00:43:52

回答

2

取决于你想要添加到表单中的数据(如果是这样,我假定的数据就是文本)。添加对应用程序扩展性的引用the Extensibility

并添加您将要添加的内容。无论是将子程序插入模块还是放入工作表中。我用这样的东西来添加一个子程序到一个新模块中,但是同样的想法可以在一个工作表中工作。

Sub AddSomething() 
    Dim VBCodeMod As CodeModule 
    Dim LineNum As Long 
    Set VBCodeMod = ActiveWorkbook.VBProject.VBComponents("Sheet1").CodeModule 
    With VBCodeMod 
    LineNum = .CountOfLines + 1 
    .InsertLines LineNum, _ 
    "Dim thing as String"& Chr(13) & _ 
    "thing = ""toothpaste"""& Chr(13) & _ 
    " 'comments too" 
    End With 

当然,如果您愿意并且明确地指定持久值,您可以调整它以覆盖您的项目。实际上,添加模块会使访问更容易,但是如果您想要,可以写入表格

1

因为保存的Excel电子表格只是对象图形的序列化,所以没有办法解决序列化对象的问题 - 如果你的物体可以往返于一个字符串,这给你很多选择,我不会看起来太难 - 如果你的物体可以往返一串。

我还在想,我自己如果CustomDocumentProperties是唯一的地方,或者如果其限制过于繁琐。

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.customdocumentproperties%28v=vs.80%29.aspx