zoukankan      html  css  js  c++  java
  • 【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 >>-------------------------------
  • 相关阅读:
    vue中动态数据使用wowjs显示动画
    vue 切换路由页面不在最顶部
    dp,.单词的划分
    二分建火车站
    .最大上升子序列和
    饥饿的奶牛(不重区间最大值)
    F. 1.小W 的质数(prime)(欧拉筛)
    月月给华华出题
    积性函数
    垒石头(排序+dp)
  • 原文地址:https://www.cnblogs.com/sekihin/p/10571031.html
Copyright © 2011-2022 走看看