Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: HEX-Code aus BIN-File einlesen

HEX-Code aus BIN-File einlesen
09.05.2014 22:41:30
Helge
Hallo,
ich bin ganz neu hier und habe, soweit ich das anhand anderer Fragen und Antworten erkennen kann, doch recht wenig Ahnung von Excel. Daher wende ich mich nach einigen gescheiterten Versuchen an euch.
Ich möchte mittels Schaltfläche den Hexadezimalen Inhalt einer .bin - Datei in das Feld A1 einlesen lassen. Die Dateien sind immer .bin und können eine Größe von 128-2048 Byte haben. Momentan schaue ich mir diese Dateien in einem separaten Hex-Editor an und füge diesen Inhalt dann manuell in das Feld ein.
Die Auswertung der Inhalte ist schon auf dieses Konzept abgestimmt (bin ich noch bei), daher wäre ein Aufteilen auf verschiedene Zellen jetzt nachteilig.
Vielleicht kann mir ja hier jemand ein paar Tips geben.
Achso... ich habe leider NULL Ahnung von VBA, aber ich vermute mal, dass es ohne Makros nicht zu realisieren ist, oder?
Schonmal vielen Dank im Voraus

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: HEX-Code aus BIN-File einlesen
10.05.2014 09:53:09
fcs
Hallo Helge,
hier ein Makro das den Inhalt einer Text-Datei in eine Zelle schreibt.
Evtl. funktioniert das auch mit deiner BIN-Datei. Den Wert der Konstanten intFormat musst du evtl. auf 0 ändern.
Gruß
Franz
Sub GetBinData_02()
Dim varAuswahl As Variant
Dim ZielZelle As Range
Const intIOmode As Integer = 1    '1 = ForReading, 2 = ForWriting, 8 = ForAppending
Const bolCreate As Boolean = True 'bei Writing oder Appending wird ggf. eine neue Datei  _
angelegt
Const intFormat As Integer = -1   '0 = ASCII, -1 = Unicode, -2 = Systemdefault
Dim FSO, TextStream
Set ZielZelle = ActiveSheet.Range("A1")
varAuswahl = Application.GetOpenFilename(Filefilter:="binäre Datei (*.bin),*.bin", _
Title:="Bitte binäre Datei auswählen, die in A1 eingefügt werden soll")
If Not varAuswahl = False Then
Set FSO = CreateObject("Scripting.FileSystemObject")
'TextStream-Objekt: object.OpenTextFile(filename[, iomode[, create[, format]]])
Set TextStream = FSO.OpenTextFile(varAuswahl, intIOmode, bolCreate, intFormat)
ZielZelle.Value = "'" & TextStream.Readall 'Hochkomma, damit Zahlen/Datum nicht _
konvertiert werden
TextStream.Close
Set FSO = Nothing
End If
End Sub

Anzeige
AW: HEX-Code aus BIN-File einlesen
10.05.2014 18:48:16
Helge
Hallo Franz,
funktioniert leider nicht...
Den Dateninhalt als HEX bekomme ich überhaupt nicht dargestellt und wenn ich auf ASCII umstelle, dann schreibt er nur ein Hochkomma und nachfolgend nur bis dahin, wo im ASCII ein Leerwert erkannt wird (Bsp.: 00 o. 8D etc.). Der Rest wird einfach abgeschnitten, aber wie gesagt, ich bekomme ja scho gar keinen Hex-Code angezeigt. Von daher ist das andere ja nicht so wild.

Anzeige
AW: HEX-Code aus BIN-File einlesen
11.05.2014 07:46:46
ChristianM
Hallo Helge,
so zB. Dateiname und Tabellenblatt musst du entsprechend anpassen.
Option Explicit
Sub ReadBinaryFile()
Dim strFile As String
Dim strRes As String
Dim intFile As Integer
Dim bytTmp As Byte
strFile = "D:\test.bin"
intFile = FreeFile
Open strFile For Binary Access Read As #intFile
Do While Not EOF(intFile)
Get intFile, , bytTmp
strRes = strRes & Hex(bytTmp) & " "
Loop
Close #intFile
ThisWorkbook.Sheets("Tabelle1").Cells(1, 1) = Trim(strRes)
End Sub
Gruß
Christian

Anzeige
AW: HEX-Code aus BIN-File einlesen
11.05.2014 22:29:36
Helge
Hallo Christian,
vielen Dank erstmal !!! ES FUNKTIONIERT !!!
bis auf eine "Kleinigkeit" ...
Sofern ein 2-Byte-Wort mit einer 0 beginnt, wird diese weggelassen (Bsp. 00=0, 07=7, 0F=F).
Das ist schlecht, da ich mich bei der Auswertung der Datei auf die Position eines Bytes beziehe, im Stil von "=TEIL(A1;458;32)"
Gibt es da noch eine Möglichkeit der Optimierung ?
MfG
Helge

Anzeige
AW: HEX-Code aus BIN-File einlesen
11.05.2014 22:30:06
Helge
Hallo Christian,
vielen Dank erstmal !!! ES FUNKTIONIERT !!!
bis auf eine "Kleinigkeit" ...
Sofern ein 2-Byte-Wort mit einer 0 beginnt, wird diese weggelassen (Bsp. 00=0, 07=7, 0F=F).
Das ist schlecht, da ich mich bei der Auswertung der Datei auf die Position eines Bytes beziehe, im Stil von "=TEIL(A1;458;32)"
Gibt es da noch eine Möglichkeit der Optimierung ?
MfG
Helge

Anzeige
AW: HEX-Code aus BIN-File einlesen
12.05.2014 09:07:47
ChristianM
meinst du so?

Option Explicit
Sub ReadBinaryFile()
Dim strFile As String
Dim strRes As String
Dim strTmp As String
Dim intFile As Integer
Dim bytTmp As Byte
strFile = "D:\test.bin"
intFile = FreeFile
Open strFile For Binary Access Read As #intFile
Do While Not EOF(intFile)
Get intFile, , bytTmp
strTmp = CStr(Hex(bytTmp))
If Len(strTmp) 
Gruß
Christian

Anzeige
AW: HEX-Code aus BIN-File einlesen
14.05.2014 19:15:58
Helge
Ja, genau !
Vielen Dank Christian
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

HEX-Code aus einer .bin Datei einlesen in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle "Einfügen" und dann "Modul".

  3. Makro einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    Sub ReadBinaryFile()
       Dim strFile As String
       Dim strRes As String
       Dim strTmp As String
       Dim intFile As Integer
       Dim bytTmp As Byte
       strFile = Application.GetOpenFilename(Filefilter:="binäre Datei (*.bin),*.bin", Title:="Bitte .bin Datei auswählen")
       intFile = FreeFile
       Open strFile For Binary Access Read As #intFile
       Do While Not EOF(intFile)
           Get intFile, , bytTmp
           strTmp = CStr(Hex(bytTmp))
           If Len(strTmp) < 2 Then strTmp = "0" & strTmp 'Werte mit führenden Nullen
           strRes = strRes & strTmp & " "
       Loop
       Close #intFile
       ThisWorkbook.Sheets("Tabelle1").Cells(1, 1) = Trim(strRes)
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus. Wähle ReadBinaryFile und klicke auf "Ausführen".

  5. .bin Datei auswählen: Wähle die gewünschte .bin datei aus und der Inhalt wird in Hexadezimalformat in Zelle A1 eingefügt.


Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"
    Lösung: Stelle sicher, dass der Pfad zur .bin datei korrekt ist und die Datei existiert.

  • Problem: Hexadezimalwerte werden abgeschnitten
    Lösung: Achte darauf, dass die Werte mit führenden Nullen formatiert werden, wie im obigen Code gezeigt.


Alternative Methoden

Eine weitere Möglichkeit, .bin dateien zu lesen, ist die Verwendung eines externen Hex-Code Editors. Diese Tools können die Datei im Hex-Format anzeigen und es ermöglichen, die Inhalte leicht zu kopieren.


Praktische Beispiele

Wenn du eine .bin datei öffnest, die zum Beispiel folgende Bytes enthält:
00 01 02 03 04 05
Wird der Hex-Code in Zelle A1 als 00 01 02 03 04 05 angezeigt. Dies ist besonders nützlich, wenn du die bin datei in hex umwandeln möchtest.


Tipps für Profis

  • Verwende die Excel HEX-Funktion, um direkt in Excel mit Hexadezimalzahlen zu arbeiten.
  • Experimentiere mit VBA-Funktionen, um die Effizienz beim Einlesen der Inhalte aus .bin dateien zu erhöhen.

FAQ: Häufige Fragen

1. Was ist eine .bin datei?
Eine .bin datei ist eine Binärdatei, die Daten in einem format enthält, das von einem Programm oder Gerät interpretiert werden kann.

2. Wie kann ich eine bin datei in hex umwandeln?
Verwende das oben beschriebene VBA-Makro, um die Inhalte der .bin datei in Hexadezimalformat in Excel zu importieren.

3. Funktioniert das auch ohne VBA?
Ohne VBA ist das Einlesen der Inhalte einer .bin datei nicht möglich. Du kannst jedoch einen Hex-Code Editor verwenden, um die Datei zu analysieren.

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