Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1124to1128
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Binärdaten lesen und darstellen

Binärdaten lesen und darstellen
Thomas
Hallo Excelperten,
ich möchte eine einfache Binärdatei öffnen, also keine Textdatei, sondern eine Datei, die alle ASCII-Zeichen von 0-255 enthalten kann. Diese Datei ist immer 2048 Byte groß. Jedes byte soll in eine Zelle hinein.
Irgendwie klappt das aber nicht so recht, hier mein bisheriger Code:
Public Sub ReadDataBinary()
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, f
Dim strEEP As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("Example.bin", ForReading)
strEEP = f.ReadAll
f.Close
Dim arrEEP() As Variant
ReDim arrEEP(127, 15)
For y = 0 To 127
For x = 0 To 15
arrEEP(y, x) = Asc(Mid(strEEP, x + y + 1, 1))
Next
Next
[C2].Resize(128, 16) = arrEEP
End Sub

Das Problem ist nun, dass er die ersten Zellen zwar richtig befüllt, aber sich "verrennt", sobald er in der Datei auf die erste "0x00" stößt, was ja normalerweise ein String-Ende darstellt.
Wie kann ich dies umgehen?
Danke schonmal,
Gruß Thomas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Binärdaten lesen und darstellen
18.12.2009 14:06:39
Anton
Hallo Thomas,
so vllt:
Code:

Sub ReadDataBinary()  
  fileToOpen = Application.GetOpenFilename()  
  If fileToOpen = False Then Exit Sub      
  Cells.Clear
  Cells.NumberFormat = "@"
  i = 1: k = 1
  Open fileToOpen For Binary Access Read As #1      
  Do While Loc(1) < LOF(1)  
    Cells(i, k) = Asc(Input(1, #1))  
    k = k + 1
    If k > 16 Then  
      k = 1: i = i + 1
    End If  
  Loop
  Close #1
  Columns.AutoFit
End Sub  


mfg Anton
Anzeige
AW: Binärdaten lesen und darstellen
18.12.2009 14:13:40
Thomas
Hallo Anton,
vielen Dank erst einmal. Es funktioniert. Zwar.
Aber eine ähnliche Lösung hatte ich bereits. Nur dauert es eben sehr lange, bis alles ausgegeben ist. Auch mit Application.Screenupdating = False geht es nicht viel schneller.
Ich werde mir wohl etwas anderes überlegen müssen...
Trotzdem danke!
Gruß
Binärdaten lesen und in Tabelle schrieben
18.12.2009 18:10:16
Erich
Hi Thomas,
teste doch mal diese beiden Varianten (im Prinzip eine Kombination aus euren Codes).
Die erste ist variabler, die zweite für genau 2048 Zeichen,
beide sind ungetestet:

Option Explicit
Sub ReadDataBinaryV()
Dim zz As Long, ss As Long, fileToOpen, arrEEP() As Integer
fileToOpen = "Example.bin" 'Application.GetOpenFilename()
If Not fileToOpen Then Exit Sub
zz = 1
ReDim arrEEP(16, 128)
Open fileToOpen For Binary Access Read As #1
Do While Loc(1)  UBound(arrEEP, 2) Then ReDim Preserve arrEEP(16, zz + 100)
End If
arrEEP(ss, zz) = Asc(Input(1, #1))
Loop
Close #1
If zz  128 Then ReDim Preserve arrEEP(16, zz)
Cells(2, 3).Resize(128, 16) = Application.Transpose(arrEEP)
End Sub
Sub ReadDataBinary2048()
Dim zz As Long, ss As Long, fileToOpen, arrEEP(16, 128) As Integer
fileToOpen = "Example.bin" 'Application.GetOpenFilename()
If Not fileToOpen Then Exit Sub
Open fileToOpen For Binary Access Read As #1
For zz = 1 To 128
For ss = 1 To 16
arrEEP(zz, ss) = Asc(Input(1, #1))
Next ss
Next zz
Close #1
Cells(2, 3).Resize(128, 16) = arrEEP
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige