Looking for vba Keywords? Try Ask4Keywords

VBA2GB + -Dateien in binärer Form in VBA und File Hashes lesen


Einführung

Es gibt eine einfache Möglichkeit, Dateien in binärer Form in VBA zu lesen, es besteht jedoch eine Einschränkung von 2 GB (2.147.483.647 Bytes - max des Datentyps Long). Wenn sich die Technologie weiterentwickelt, wird diese Grenze von 2 GB leicht überschritten. zB ein ISO-Image der Betriebssystem-DVD. Microsoft bietet eine Möglichkeit, dies durch eine Windows-API auf niedriger Ebene zu beheben, und hier ist eine Sicherungskopie davon.

Demonstrieren Sie (Lese-Teil) auch die Berechnung von Datei-Hashes ohne externes Programm wie fciv.exe von Microsoft.

Bemerkungen

METHODEN FÜR DIE KLASSE VON MICROSOFT

Methodenname Beschreibung
Ist offen Gibt einen Booleschen Wert zurück, um anzuzeigen, ob die Datei geöffnet ist.
OpenFile ( sFileNam As String) Öffnet die durch das Argument sFileName angegebene Datei.
Datei schließen Schließt die aktuell geöffnete Datei.
ReadBytes ( ByteCount As Long) Liest ByteCount-Bytes und gibt sie in einem Variant-Byte-Array zurück und verschiebt den Zeiger.
WriteBytes ( DataBytes () As Byte) Schreibt den Inhalt des Bytearrays an die aktuelle Position in der Datei und verschiebt den Zeiger.
Spülen Zwingt Windows, den Schreibcache zu leeren.
SeekAbsolute ( HighPos so lang, LowPos so lang) Verschiebt den Dateizeiger vom Anfang der Datei an die angegebene Position. Obwohl die DWORDS von VBA als signierte Werte behandelt werden, werden sie von der API als nicht signiert behandelt. Stellen Sie sicher, dass das Argument höherer Ordnung 4 GB überschreitet. Das niederwertige DWORD ist für Werte zwischen 2 GB und 4 GB negativ.
SeekRelative ( Offset so lange) Verschiebt den Dateizeiger vom aktuellen Speicherort auf +/- 2 GB. Sie können diese Methode umschreiben, um Offsets von mehr als 2 GB zu berücksichtigen, indem Sie einen 64-Bit-Vorzeichenversatz in zwei 32-Bit-Werte konvertieren.

EIGENSCHAFTEN DER KLASSE VON MICROSOFT

Eigentum Beschreibung
FileHandle Das Dateihandle für die aktuell geöffnete Datei. Dies ist nicht kompatibel mit VBA-Dateihandles.
Dateiname Der Name der aktuell geöffneten Datei.
AutoFlush Legt fest, ob WriteBytes die Flush-Methode automatisch aufruft.

NORMALMODUL

Funktion Anmerkungen
GetFileHash ( sFile As String, uBlockSize As Double, sHashType As String) Geben Sie einfach den vollständigen Pfad ein, der gehasht werden soll, verwenden Sie Blocksize (Anzahl Byte) und den Typ des zu verwendenden Hash - eine der privaten Konstanten: HashTypeMD5 , HashTypeSHA1 , HashTypeSHA256 , HashTypeSHA384 , HashTypeSHA512 . Dies sollte so generisch wie möglich sein.

Sie sollten uFileSize As Double entsprechend dekomprimieren . Ich habe MD5 und SHA1 getestet.

2GB + -Dateien in binärer Form in VBA und File Hashes lesen Verwandte Beispiele