【Excel】读取固定长文本
'******************************************************************************* ' 固定長形式テキストファイルを読み込むサンプル(改行なし) ' ' 作成者:井上治 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 >>-------------------------------
本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。 |