Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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ß
Anzeige
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
;
Anzeige
Anzeige

Infobox / Tutorial

Binärdaten in Excel lesen und darstellen


Schritt-für-Schritt-Anleitung

Um eine Binärdatei in Excel zu lesen und die Daten in Zellen darzustellen, kannst du den folgenden VBA-Code verwenden. Dieser Code öffnet eine Binärdatei, liest die Daten byteweise und fügt sie in eine Excel-Tabelle ein.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul ein (Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub ReadDataBinary()
    Dim fileToOpen As String
    Dim i As Long, k As Long
    fileToOpen = Application.GetOpenFilename("Binärdateien (*.bin), *.bin")
    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
  1. Schließe den VBA-Editor und führe das Makro aus (Entwicklertools > Makros > ReadDataBinary).

Die Binärdatei wird nun geöffnet und die Daten werden in Zellen eingefügt.


Häufige Fehler und Lösungen

  • Problem: Die Daten werden nicht korrekt dargestellt oder es gibt Fehler beim Lesen der Datei.

    • Lösung: Stelle sicher, dass die Datei eine gültige Binärdatei ist und die Größe wie erwartet ist (2048 Byte). Verwende den Open Befehl mit For Binary Access Read.
  • Problem: Der Code läuft sehr langsam.

    • Lösung: Setze Application.ScreenUpdating = False am Anfang des Codes und Application.ScreenUpdating = True am Ende, um die Performance zu verbessern.

Alternative Methoden

Eine andere Möglichkeit, eine Binärdatei zu lesen, besteht darin, die Länge der Datei zu überprüfen und die Daten in einem Array zwischenzuspeichern:

Sub ReadDataBinaryV()
    Dim zz As Long, ss As Long, fileToOpen As String, arrEEP() As Integer
    fileToOpen = Application.GetOpenFilename("Binärdateien (*.bin), *.bin")
    If fileToOpen = "False" Then Exit Sub

    zz = 1
    ReDim arrEEP(16, 128)

    Open fileToOpen For Binary Access Read As #1
    Do While Loc(1) < LOF(1)
        If zz > UBound(arrEEP, 2) Then ReDim Preserve arrEEP(16, zz + 100)
        arrEEP(ss, zz) = Asc(Input(1, #1))
        zz = zz + 1
    Loop
    Close #1
    Cells(2, 3).Resize(128, 16) = Application.Transpose(arrEEP)
End Sub

Praktische Beispiele

Hier sind einige Beispiele für das Lesen von Binärdaten:

  1. Beispiel 1: Lies eine Binärdatei und speichere die Daten in einer Tabelle, wobei die Größe der Datei 2048 Byte beträgt.

  2. Beispiel 2: Verwende den vba read binary file Ansatz, um die Daten in einem benutzerdefinierten Format zu speichern, z.B. als Hexadezimalwerte.


Tipps für Profis

  • Achte darauf, dass du die korrekten Dateipfade und Dateinamen angibst, wenn du eine binärdatei öffnen möchtest.
  • Experimentiere mit den Parametern des Input Befehls, um unterschiedliche Datentypen aus der Binärdatei zu lesen.
  • Überlege, wie du die Daten vor der Darstellung in Excel weiterverarbeiten kannst, z.B. durch Umwandlung in andere Formate oder Aggregation.

FAQ: Häufige Fragen

1. Wie kann ich eine Binärdatei direkt in Excel importieren?
Du kannst dies tun, indem du ein VBA-Makro verwendest, das die Binärdatei öffnet und die Daten zeilenweise in die Zellen einfügt.

2. Gibt es eine Möglichkeit, die Lesegeschwindigkeit zu erhöhen?
Ja, indem du die Bildschirmaktualisierung während des Lesevorgangs deaktivierst und die Daten in Arrays speicherst, bevor du sie in die Zellen einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige