• 【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 >>-------------------------------
  • 相关阅读:
    linux下golang的配置
    为什么有闭包?
    分布式之高性能IO组件
    ECMAScript 5.1 Edition DOC 学习笔记
    直线光栅画法
    【计算机基础】三、指令与指令执行过程
    ThreadLocal的使用
    【设计模式】单例模式
    问题记录
    【Java基础】- 泛型
  • 原文地址:https://www.cnblogs.com/sekihin/p/10571031.html
Copyright © 2020-2023  润新知