バイナリファイルの読み込みをする
VBAでバイナリファイルを読み込むには、Openステートメントのモードに Bainary を指定して開いたファイルに対してGetステートメントを利用することで読み込みすることができます。
サンプルコードでは取得したバイナリデータをアドレス表示の形式でも出力しており、実行結果にはバイナリで正しく読み込めていることを確認するため、同じファイルをバイナリエディタのソフトを利用した画面を貼り付けています。
●バイナリデータの読み込み(アドレス表示付き)
'*****************************************************************
' バイナリデータの読み込み
'*****************************************************************
Sub Main_ReadBinary()
'読込み対象のファイルパス
Dim sFilePath As String
sFilePath = "C:\VBA\bin\binary.dll"
'バイナリで読み込み
Dim sBinData As String
sBinData = ReadBinary(sFilePath)
'出力
Debug.Print "(表示)"
Debug.Print sBinData
Debug.Print
Debug.Print "(アドレス表示)"
Call setBinAddress(sBinData)
End Sub
'*****************************************************************
' バイナリデータ取得
'-----------------------------------------------------------------
' 第1引数:対象ファイルのパス
'*****************************************************************
Function ReadBinary(getFilePath As String) As String
'ファイル番号取得
Dim lFn As Long
lFn = FreeFile
'ファイルをバイナリで開く
Open getFilePath For Binary As #lFn
'作業領域の設定
Dim bBin() As Byte
ReDim bBin(LOF(lFn) - 1)
'データを読込み
Get #lFn, , bBin
'読込んだデータを編集
Dim i As Long
Dim sBinary As String
For i = 0 To LOF(lFn) - 1
sBinary = sBinary + Right("00" & Hex(bBin(i)), 2) + Space(1)
Next
'終端文字追加
sBinary = sBinary + "(END)"
'ファイルを閉じる
Close (lFn)
ReadBinary = sBinary
End Function
'*****************************************************************
' バイナリのアドレス表示
'-----------------------------------------------------------------
' 第1引数:対象ファイルのパス
'*****************************************************************
Sub setBinAddress(getBin As String)
'ヘッダ情報を出力
Debug.Print "ADDRESS 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F"
Debug.Print "---------------------------------------------------------"
Dim lPos As Long
lPos = 0
Dim i As Long
For i = 1 To Len(getBin)
'表示用のアドレスを作成
Dim sAddress As String
sAddress = Right("00000000" & Hex(lPos), 8) & Space(1)
'バイナリ表示(16バイト分の表示で折り返し)
Debug.Print sAddress + Mid(getBin, i, 3 * 16)
i = i + 3 * 16 - 1
lPos = lPos + 16
Next
End Sub■実行結果




