'*******************************************************************************
' 固定長形式テキストファイルを読み込むサンプル(改行なし)
'
' 作成者:井上治 URL:http://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'*******************************************************************************
' [参照設定]
' ・Microsoft Scripting Runtime
'*******************************************************************************
Option Explicit
' レコードの項目定義
Private Type typREC
CODE As String * 5 ' コード
MAKER As String * 10 ' メーカー
HINMEI As String * 15 ' 品名
SURYO As String * 4 ' 数量
TANKA As String * 6 ' 単価
KINGAKU As String * 8 ' 金額
' CRLF As String * 2 ' 改行コード分のダミー項目
End Type
'*******************************************************************************
' 固定長形式テキストファイルを読み込むサンプル(改行なし)
' 参照設定:(未使用)
'*******************************************************************************
Sub READ_FixLngFile2()
Const cnsFILENAME = "\SAMPLE2.dat"
Const cnsLNGS = 48 ' レコード長
Dim strFileName As String ' ファイル名
Dim intFF As Integer ' FreeFile値
Dim lngLOF As Long ' LOF値
Dim lngPOS As Long ' 読み込み位置
Dim GYO As Long ' 収容するセルの行
Dim tmpREC As typREC ' レコード定義
Dim strREC As String ' レコードを収容する変数
' 指定ファイルをOPEN(入力モード)
strFileName = ThisWorkbook.Path & cnsFILENAME
intFF = FreeFile
Open strFileName For Binary As #intFF
lngLOF = LOF(intFF) ' LOF値(ファイルサイズ)取得
lngPOS = 1 ' 読み込み位置
' 2行目から開始
Rows("2:65536").ClearContents
GYO = 2
Do Until lngPOS > lngLOF
' レコードの読み込み
Get #intFF, lngPOS, tmpREC
' 1レコード分のセルへのセット
'-----------------------------------------------------------------------
' A列(コード)は5バイトの文字列処理
Cells(GYO, 1).Value = Trim(tmpREC.CODE)
' B列(メーカー)は10バイトの文字列処理
Cells(GYO, 2).Value = Trim(tmpREC.MAKER)
' C列(品名)は15バイトの文字列処理
Cells(GYO, 3).Value = Trim(tmpREC.HINMEI)
' D列(数量)は4バイトの数値処理
Cells(GYO, 4).Value = CCur(tmpREC.SURYO)
' E列(単価)は6バイトの数値処理
Cells(GYO, 5).Value = CCur(tmpREC.TANKA)
' F列(金額)は8バイトの数値処理
Cells(GYO, 6).Value = CCur(tmpREC.KINGAKU)
'-----------------------------------------------------------------------
' 読み込み位置を加算
lngPOS = lngPOS + cnsLNGS
' 行を加算
GYO = GYO + 1
Loop
' 指定ファイルをCLOSE
Close #intFF
End Sub
'-----------------------------<< End of Source >>-------------------------------