ピナクルのくるくるパソコン術

みんなが使えるパソコン術を提供します。

【VBA】バイナリファイルを読み込む


VBAでバイナリファイルを読み込む方法を紹介します。

* 説明

①ファイルを開くにはOpenステートメントを利用する。

 Open ファイル名 For ファイル モード Access ファイルの開き方 As ファイル番号
           
説明
ファイル名 開けるファイル名を指定する文字列 C:\temp\test.txt
ファイル モードファイル モードを指定する キーワード
 Append
 Binary
 Input
 Output
 Random
Binary
ファイルの開き方開いたファイルに対して許可される操作を指定するキーワード
 Read
 Write
 Read Write
Read
ファイル番号有効なファイル番号
次に使用可能なファイル番号を取得するには、FreeFile 関数を使用する
1

docs.microsoft.com

②Openステートメント用に、有効なファイル番号を取得する。

Dim lFNum As Integer
lFNum = FreeFile

docs.microsoft.com

③ファイルサイズを取得し、ファイルから取り出すデータのサイズを取得する。

Dim lFileSize As Long
lFileSize = FileLen (ファイル名)

docs.microsoft.com

ファイルをOpenする前にサイズを撮る場合にFileLen関数を使います。
ファイルをOpenしてからサイズを撮りたい場合はLOF関数を使用してください。

④ファイルからデータを取得する

Dim lBin() As Byte
Get ファイル番号(①で指定した番号), , lBin

docs.microsoft.com

⑤ファイルを閉じる

Close ファイル番号

docs.microsoft.com

* おまけ

使いやすいように関数化してみました。

Function ReadlBinFile(aFilePath As String) As Byte()
    Dim lBin() As Byte
    
    '③ファイルサイズを取得する
    Dim lFileSize As long
    lFileSize = FileLen(aFilePath)
    If lFileSize = 0 Then
        'ファイルサイズが0ならば処理を抜ける
        ReadlBinFile = lBin
        Exit Function
    End If
    ReDim lBin(lFileSize)
    
    '②有効なファイル番号を取得する
    Dim lFNum As Integer
    lFNum = FreeFile
    
    '①指定ファイルを開く
    Open aFilePath For Binary Access Read As lFNum
    
    '④ファイルからデータを取得する
    Get lFNum, , lBin

    '⑤ファイルを閉じる
    Close lFNum    
    ReadlBinFile = lBin
End Function

下記のように呼び出して使えます。

Sub ReadBin()
    Dim lPath As String
    lPath = "C:\temp\test.txt"
    
    Dim lBin() As Byte
    lBin = ReadlBinFile(lPath)
    Debug.Print ConvertBinToText(lBin)
End Sub

C:\temp\test.txt

12345

12345

出力結果

 31323334350D0A0D0A3132333435

確認に使ってるConvertBinToText関数は下記のリンクにあります。

wakao-institute.hatenablog.com

ぜひ使ってみてください!