• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:こんにちは。)

Excelで固定長テキストファイルを処理する方法

このQ&Aのポイント
  • Excelで固定長のテキストファイルを処理する方法について教えてください。
  • Excelの各セルに固定長テキストファイルの内容を貼り付ける方法を教えてください。
  • ExcelのVBAを使って固定長のテキストファイルを読み込むプログラムを作成する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • MRT1452
  • ベストアンサー率42% (1391/3293)
回答No.1

開発する前に、ファイル仕様を明確にした方が良いかと。 情報としてはヘッダ3桁がキーと言うことしかわからないので。 同一キーのデータが同じ仕様(各データの文字長やが一致しているのか等)になっているのか (つまり本当に「固定長」なのか) もしこれが一致していない(固定長でない)のであれば、ぶっちゃけ、開発不可能。 この場合は該当のファイルを吐き出すシステムから考え直す必要があります。 読み込むデータがあるルール化(つまりフォーマット)を元に正確に作られているのであれば、 単に1行毎読み込んで、キーをベースに、データ分割して、セルに入れるだけなので何ということは無いと思いますが。 キーが同じなのにデータの順番が違う、データの開始桁数が違うとかそういったデータ区切りの無い、可変長データならば、お手上げです。 なので、まずは本当にシステム化できるデータになっているのかどうか。 等の検討をしてからかと。 イメージ的には ファイル番号取得 ファイルパスを指定しファイルを読み込みモードで開く ループ開始(終了条件:ファイルの終わり) 1行分のデータ読み込み 頭3桁(キー)取得   if文(又はselect case)でキー判定   キーがABCのときの処理(残りのデータの固定長分割、及びセルへのセット)。   キーがDEFのときの処理。   キーがGHIのときの処理。 (中略)   キーがXYZのときの処理。 ループ範囲終了 ファイルを閉じる という感じかな。前述しているように、ある一定法則で作られた本当の固定長ならば、こういった感じで作れば良いかと。 固定長の分割の場合は、桁数がわかっているはずなのでmid関数で桁数を指定して抜き出すという形になります。 a = ABCTTTTTTTTTTTTTTTTKKKKKOOOOOOPPPPPPPPWWWWWWWWWWWWWWWWWWWWWWWSS であれば mid(a,1,3) → ABC mid(a,4,16) → TTTTTTTTTTTTTTTT mid(a,20,5) → KKKKK (以下略) ただし、注意点として、VBでの文字のカウントは、単純に文字数のカウントしかしないので注意。 "A"も"A"も1文字としてカウントします。 全角、半角のどちらか片方のみのデータならmid関数で良いのですが、全角と半角が混ざる場合、固定長は注意が必要です。 その辺りの対策はネット等で有志が上げているサンプル等を確認してください。 (バイト数で範囲を抜き出す(とヘルプでは説明している)midBでも正確に取れないので、別途自作する必要がある)

その他の回答 (1)

  • MRT1452
  • ベストアンサー率42% (1391/3293)
回答No.2

複数アカウントを使ってのマルチポストであると判明したので、通報しました。 困っているのはわかりますが、そういうやり方をするのはどうかと思います。 以上。

digitalulp
質問者

お礼

細かい回答ありがとうございます。 また、重複質問への指摘もありがとうございます。 確かに、困ってしまってました。全く違うところへの掲載かと思い、 単純にコピペしてしまいました。 でも、違うフォーラムでもマルチポストと言うことになるんですね。 そもそも、マルチポストと言う言葉自体知らなかったのですので…。 以後、気をつけたいと思います。