'******************************************************************************* ' 固定長形式テキストファイルを読み込むサンプル(改行なし) ' ' 做成者:井上治 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 >>-------------------------------