簡體   English   中英

在Excel工作簿中保存自定義數據

[英]Save custom data in Excel workbook

是否可以在Excel工作簿中保存大量數據(約1-2 MB)?

理想情況下,此數據應與工作簿中的工作表綁定。
CustomProperties不太可能支持大數據。

我的數據可以以下列形式呈現:binary,xml,string。

謝謝...

如果您的信息來自文件,您可以以二進制模式讀取文件並將其放在單元格中。 然后在最后或開頭,您將保存文件名,以便您可以輕松地重建文件。 以下是一些代碼供您開頭:

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 

是的,您可以在Excel單元格中存儲字符串和XML。 對於二進制文件,最好不要將其保存在Excel中,但如果必須,則可以選擇OLE(對象鏈接和嵌入)。 您可以通過將二進制文件保存為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

對於某些類型的常見文件類型,它對我們來說很好。 但我們從來沒有為原始二進制數據做過。 通常我們在電子表格中放置Word文檔或PDF。 您還可能存在可能損壞工作簿或丟失二進制數據的風險。 在我們的例子中,OLE對象將由具有Wordperfect而不是Word的用戶單擊,或者他們運行Linux / Mac並且嵌入式文檔無法打開。

它確實使您添加的每個嵌入對象的Excel文件變得相當大。 這是一項古怪的技術。

您可以將VBA模塊添加到工作簿中以獲取數據,並使用常規ASCII字符串對數據進行編碼(例如,使用Base64編碼)。 結果代碼如下所示:

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


End Sub

如果您願意,也可以逐行將這些字符串存儲在工作表而不是VBA模塊中。

要完成編碼/解碼,請在此處查看:

如何使用Excel VBA有效地對字符串進行base64編碼?

Base64在VBScript中編碼字符串

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM