将自定义数据保存在Excel工作簿中

是否可以在Excel工作簿中保存大量的数据(大约1-2 mb)?

理想情况下,这些数据应该与工作簿中的工作表绑定在一起。
CustomProperties不太可能支持大数据。

我的数据可以用下面的forms表示:binary,xml,string。

谢谢…

是的,您可以将string和XML存储在Excel单元格中。 对于二进制你最好不要将它保存在Excel中,但如果你不得不那么OLE(对象链接和embedded)可能是一个选项。 您可以通过将二进制文件另存为Excel以外的文件,然后将其作为OLE对象插入:

Dim mySht As Worksheet Dim oleFileName as String oleFile = "MyXmlDoc.xml" Set mySht = ActiveWorkbook.ActiveSheet mySht.Shapes.AddOLEObject Filename:=Environ$("Appdata") & _ "\MyFolder\" & oleFile, _ Link:=False, DisplayAsIcon:=True 

对于某些常见的文件types,它工作得很好。 但是我们从来没有做过原始的二进制数据。 通常我们会在电子表格中添加Word文档或PDF。 您也有可能破坏工作簿或丢失二进制数据的风险。 在我们的例子中,OLE对象将被具有Wordperfect而不是Word的用户点击,或者他们运行Linux / Mac,并且embedded式文档不会打开。

它确实使Excel文件变得相当大,每添加一个embedded的对象。 这是一个古怪的技术与它的怪癖。

您可以将VBA模块添加到数据的工作簿中,并使用正常的ASCIIstring(例如,使用Base64编码)对数据进行编码。 结果代码如下所示:

 Dim x(1000) As String Sub InitData() x(0) = "abcdefghijk...." x(1) = "123456789......" '...' End Sub 

如果您愿意,也可以将这些string逐行存储在工作表中,而不是VBA模块。

要完成编码/解码,请看这里:

如何使用Excel VBA base64高效编码string?

在VBScript中的Base64编码string

http://www.source-code.biz/snippets/vbasic/12.htm

如果您的信息以文件forms存在,您可以用二进制模式读取文件并将其放入一个单元格中。 然后在最后或开始时,您将保存您的文件名,以便您可以轻松地重build文件。 这里有一些代码供你开始:

 Sub readBin() Dim iFreeFile As Integer, bTemporary As Byte iFreeFile = FreeFile Open "\temp.bin" For Binary Access Read As iFreeFile Do While Not EOF(intFileNum) Get iFreeFile, , bTemporary //read byte from file Cells(1, 1) = bTemporary //save in cell Loop Close iFreeFile End Sub