4 Stimmen

Benutzerdefinierte Daten in Excel-Arbeitsmappe speichern

Ist es möglich, große Datenmengen (etwa 1-2 MB) in einer Excel-Arbeitsmappe zu speichern?

Idealerweise sollten diese Daten mit einem Arbeitsblatt in der Arbeitsmappe verknüpft sein.
Es ist unwahrscheinlich, dass CustomProperties große Daten unterstützen.

Meine Daten können in folgenden Formen dargestellt werden: binär, xml, string.

Danke...

0 Stimmen

Zellen in Excel unterstützen sowohl Text als auch Formeln und Zahlen. Warum wollen Sie Excel zum Speichern von Binärdaten verwenden? Es wird sehr schwierig sein, sie in Excel zu verwenden ...

0voto

Charles Byrne Punkte 806

Ja, Sie können Strings und XML in Excel-Zellen speichern. Bei Binärdateien wäre es besser, sie nicht in Excel zu speichern, aber wenn Sie es tun müssten, könnte OLE (Object Linking and Embedding) eine Option sein. Dazu könnten Sie die Binärdatei als Datei außerhalb von Excel speichern und dann als OLE-Objekt einfügen:

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

Bei einigen gängigen Dateitypen hat das bei uns gut funktioniert. Aber wir haben es nie für binäre Rohdaten verwendet. Normalerweise legen wir ein Word-Dokument oder eine PDF-Datei in die Tabelle ein. Außerdem besteht die Gefahr, dass die Arbeitsmappe beschädigt wird oder die Binärdaten verloren gehen. In unserem Fall wurde das OLE-Objekt von einem Benutzer angeklickt, der Wordperfect anstelle von Word verwendete oder mit Linux/Mac arbeitete, und das eingebettete Dokument konnte nicht geöffnet werden.

Allerdings wird die Excel-Datei mit jedem eingebetteten Objekt, das Sie hinzufügen, ziemlich groß. Es ist eine alte Technologie mit ihren Macken.

0voto

Doc Brown Punkte 19104

Sie könnten der Arbeitsmappe ein VBA-Modul für Ihre Daten hinzufügen und Ihre Daten in normalen ASCII-Zeichenfolgen kodieren (z. B. mit Base64-Kodierung). Der daraus resultierende Code würde wie folgt aussehen:

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

End Sub

Sie können diese Zeichenfolgen auch zeilenweise in einem Blatt statt in einem VBA-Modul speichern, wenn Sie dies bevorzugen.

Um die Kodierung/Dekodierung durchzuführen, schauen Sie hier:

Wie kann ich eine Zeichenkette mit Excel VBA effizient mit base64 kodieren?

Base64-Kodierung von Strings in VBScript

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

0voto

Wenn Ihre Informationen in Dateien vorliegen, können Sie die Datei im Binärmodus lesen und in eine Zelle einfügen. Am Ende oder am Anfang würden Sie dann Ihren Dateinamen speichern, so dass Sie die Datei leicht rekonstruieren können. Hier ist ein Code, mit dem Sie beginnen können:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X