Lange Data Listen...

Bild

Betrifft: Lange Data Listen...
von: Norman
Geschrieben am: 15.02.2005 22:54:37
Hallo alle,
ich hatte schonmal in der Liste gefragt, ob es möglich ist, Binärdateien in Excel abzulegen (ja) und sie dann wieder auf Platte zu speichern. Letzteres ging nicht. Deshalb habe ich mich entschlossen, die Binärdatei in einem Array abzulegen, so ala
Dim varDaten As Long
varDaten1 = Array( 1, 2, 3, 5, 11, 4 _
....
)
Insgesamt will ich so ca. 20.000 Bytes (also 20.000 Zahlen) ablegen. Klar ist das viel, einen besseren Weg habe ich aber net. Leider meckert Excel immer wenn die Zeile größer 1024 Bytes ist oder ich zu viele Zeilenverbinder (also den Underscore _ ) nutze. Und ich habe irgendwie keine Lust 20 Arrays daraus zu machen. Gibt's nicht irgendeine chice Lösung für meine 20 Kb Daten? Das muss man doch schön in VBA ablegen können... Wenn mir nichts mehr einfällt, dann pack ichs einfach in ein Excel-Sheet, aber ich hätts so gerne in VBA gehabt....
Jemand ne Idee?
Beste Grüße und Danke
Norman

Bild

Betrifft: AW: Lange Data Listen...
von: bst
Geschrieben am: 16.02.2005 09:06:22
Morgen Norman,
> ich hatte schonmal in der Liste gefragt, ob es möglich ist, Binärdateien in Excel
> abzulegen (ja) und sie dann wieder auf Platte zu speichern.
> Letzteres ging nicht
Warum ?
Nimm Get und Put. Siehe VBA Hilfe (mit Beispiel) hierzu.
Oder google mal nach VBA binaer.
cu, Bernd
Bild

Betrifft: AW: Lange Data Listen...
von: Norman
Geschrieben am: 16.02.2005 14:05:15
Hi Bernd,
klar, get und put macht das was ich will. Mir geht's aber darum, wie ich eine 20Kb große Datei in einer xls-Datei ablegen kann und sie zu einem späteren Zeitpunkt (mit put) wieder auf die Platte zurüschreiben kann.
Google VBA binaer hat mir da nichts gebracht.
Gruß
Norman
Bild

Betrifft: AW: Lange Data Listen...
von: bst
Geschrieben am: 16.02.2005 15:11:16
Hmm,
dann versuch halt mal sowas. Ist sich ziemlich ungetestet.
Liest einfach die Binärdaten ein und schreibt ihren Code (0..255) in eine Zelle.
Je 256 Mal pro Zeile. Das Schreiben funktioniert analog.
Wozu auch immer dieses gut sein soll ...
HTH, Bernd
--
Option Explicit
Const fname As String = "D:\temp\test.bin"

Sub ReadIt()
   Dim i As Long, j As Integer, xlen As Long
   Dim arr(1 To 256) As Byte
   
   Open fname For Binary Access Read As #1
   xlen = LOF(1) Mod 256 ' der Rest am Ende
   While Not EOF(1)
      i = i + 1
      Get #1, , arr
      For j = 1 To 256
         Cells(i, j).Value = arr(j)
      Next
   Wend
   If xlen <> 0 Then Range(Cells(i, xlen + 1), Cells(i, 256)).Clear
   Close #1
End Sub


Sub WriteIt()
   Dim i As Long, j As Integer, maxj As Integer
   Dim arr() As Byte
   
   If Dir(fname) <> "" Then Kill fname
   ReDim arr(1 To 256)
   Open fname For Binary Access Write As #1
   For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row - 1
      For j = 1 To 256
         arr(j) = Cells(i, j)
      Next
      Put #1, , arr
   Next
   ' Letzte Zeile speziell behandeln
   maxj = IIf(Cells(i, 256) = "", Cells(i, 256).End(xlToLeft).Column, 256)
   ReDim arr(1 To maxj)
   For j = 1 To maxj
      arr(j) = Cells(i, j)
   Next
   Put #1, , arr
   Close #1
End Sub

Bild

Betrifft: AW: Lange Data Listen...
von: Norman
Geschrieben am: 16.02.2005 18:54:40
Hi Bernd,
ja, cool, so in etwa hatte ichs mir gedacht. Das kann ich auf alle Fälle benutzen.
"Wozu auch immer dieses gut sein soll ..." - Nuja, ich will eben keine gesonderte Datei beilegen, sondern alles in einer Datei haben. In den 20Kb steckt eine Exe, die vor dem Speichern noch verändert werden soll. Und Deine Lösung ist genau der Weg das zu machen :)
Gruß und Danke!
Norman
Bild

Betrifft: Gruß & Bitteschön OwT
von: bst
Geschrieben am: 16.02.2005 22:44:21
.
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Autofilter - Nur sichtbare Zellen addieren"