Option Explicit
Public Type BITMAP
bmHead As String * 18
bmWidth As Long
bmHeight As Long
End Type
Sub GetBitmapPixel()
Dim bmp As BITMAP
Dim intFile As Integer
Dim strTmp As String * 54
Dim lngBytes As Long
Dim bytPixel() As Byte
Const BMPFILE = "D:\3x3.bmp"
'Höhe und Breite des Bitmaps aus Header auslesen
intFile = FreeFile
Open BMPFILE For Binary Access Read As #intFile
Get #intFile, , bmp
Close #intFile
'Größe bestimmen
lngBytes = bmp.bmHeight * (bmp.bmWidth * 3 + bmp.bmWidth Mod 4)
ReDim bytPixel(0 To lngBytes - 1)
intFile = FreeFile
Open BMPFILE For Binary Access Read As #intFile
Get #intFile, , strTmp
Get #intFile, , bytPixel
Close #intFile
'Pixel sind jetzt im Array bytPixel.
End Sub
Gruß
Christoph
PS: Der Code läuft bei 24bit Bitmaps. Ob sich Header und Aufbau bei anderer Farbtiefe unterscheiden, musst du noch recherchieren.
Sub BMPSize(D As String, Wdth As Long, Hght As Long)
Dim Nr As Integer
Dim Dmmy As String * 18
Nr = FreeFile
Open D$ For Binary As #Nr
Get #Nr, , Dmmy
Get #Nr, , Wdth
Get #Nr, , Hght
Close #Nr
End Sub
Wie gesagt, ich sehe, dass es funktioniert, aber ich kapier nicht wie. Aber Hauptsache ...
Und ganz fettes DANKE nochmal.
Bitmap-Datei vorbereiten: Stelle sicher, dass du eine Bitmap-Datei hast, die du auslesen möchtest. Die empfohlenen Formate sind 24-Bit-Bitmaps, da der bereitgestellte VBA-Code für diese Art von Dateien gedacht ist.
VBA-Editor öffnen: Gehe zu Excel und öffne den VBA-Editor mit ALT + F11
.
Modul einfügen: Klicke mit der rechten Maustaste auf „VBAProject (dein Workbook)“ und wähle „Modul einfügen“.
Code einfügen: Kopiere den folgenden Code in das neue Modul:
Option Explicit
Public Type BITMAP
bmHead As String * 18
bmWidth As Long
bmHeight As Long
End Type
Sub GetBitmapPixel()
Dim bmp As BITMAP
Dim intFile As Integer
Dim strTmp As String * 54
Dim lngBytes As Long
Dim bytPixel() As Byte
Const BMPFILE = "D:\DeinPfad\deineBitmap.bmp" ' Pfad zur Bitmap-Datei
' Höhe und Breite des Bitmaps aus Header auslesen
intFile = FreeFile
Open BMPFILE For Binary Access Read As #intFile
Get #intFile, , bmp
Close #intFile
' Größe bestimmen
lngBytes = bmp.bmHeight * (bmp.bmWidth * 3 + bmp.bmWidth Mod 4)
ReDim bytPixel(0 To lngBytes - 1)
intFile = FreeFile
Open BMPFILE For Binary Access Read As #intFile
Get #intFile, , strTmp
Get #intFile, , bytPixel
Close #intFile
' Pixel sind jetzt im Array bytPixel.
End Sub
Code ausführen: Schließe den VBA-Editor und führe das Makro GetBitmapPixel
aus, um die Pixelwerte zu laden.
Fehler beim Öffnen der Datei: Stelle sicher, dass der Pfad zur Bitmap-Datei korrekt ist und die Datei existiert. Überprüfe auch, ob die Datei im richtigen Format vorliegt.
Variable nicht definiert: Wenn du eine Fehlermeldung über nicht definierte Variablen erhältst, stelle sicher, dass du die „Option Explicit“ am Anfang deines Codes hast, um Variablen korrekt zu deklarieren.
Falsche Bit-Tiefe: Der bereitgestellte Code funktioniert nur mit 24-Bit-Bitmaps. Stelle sicher, dass deine Bitmap diese Anforderungen erfüllt.
Verwendung von Python: Wenn du nicht mit VBA arbeiten möchtest, kannst du auch Python und Bibliotheken wie PIL
(Pillow) verwenden, um Bitmap-Dateien auszulesen und Pixelwerte zu bearbeiten.
Excel-Add-Ins: Es gibt verschiedene Excel-Add-Ins, die das Auslesen von Bitmap-Dateien erleichtern können, ohne dass du selbst Programmcode schreiben musst.
Einfaches Bitmap erstellen: Erstelle eine 3x3 Bitmap mit weißen Pixeln und speichere sie als 3x3.bmp
. Verwende den bereitgestellten VBA-Code, um die Pixelwerte auszulesen.
Analyse der Pixelwerte: Nachdem du die Pixel in das Array bytPixel
geladen hast, kannst du eine Schleife verwenden, um die Werte zu analysieren und das erste nicht-weiße Pixel zu finden.
Dim i As Long
For i = LBound(bytPixel) To UBound(bytPixel) Step 3
If bytPixel(i) < 255 Then ' Annahme: Weiß ist 255
MsgBox "Nicht-weißes Pixel gefunden bei Index: " & i
Exit For
End If
Next i
Optimierung des Codes: Du kannst den Code optimieren, indem du Fehlerbehandlungen hinzufügst und sicherstellst, dass die Datei geöffnet und geschlossen wird, auch wenn ein Fehler auftritt.
Verwendung von Arrays: Arbeite mit Arrays, um die Leistung zu verbessern, insbesondere bei großen Bitmap-Dateien.
Erweiterung des Codes: Überlege, den Code zu erweitern, um zusätzliche Informationen wie Farbwerte in RGB oder Hexadezimalformat zu extrahieren.
1. Wie kann ich eine Bitmap-Datei in Excel öffnen?
Du kannst eine Bitmap-Datei in Excel öffnen, indem du den VBA-Code verwendest, der die Datei im Binärmodus öffnet und die benötigten Informationen aus dem Header extrahiert.
2. Was ist der Bitmap-Header?
Der Bitmap-Header enthält wichtige Informationen über die Bildgröße, die Farbtiefe und die Struktur der Pixel. Im Falle einer 24-Bit-Bitmap ist der Header 54 Byte groß.
3. Funktioniert dieser Code in Excel 2007?
Ja, der bereitgestellte VBA-Code funktioniert in Excel 2007, solange du die Application.FileSearch
-Methode entsprechend anpasst, wie es in den Diskussionen erwähnt wurde.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen