【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 >>-------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2007-03-21 SQL Server的Inner Join及Outer Join
2007-03-21 ADO中的UpdateBatch与update区别