- ベストアンサー
Excelで全銀協のFBデータをインポートしたい
各銀行で共通使用している全銀協の FBデータをExcelでインポートしたいと思っています。 一度、CSVファイルに変換するのかExcelで一旦取込後、VBAで桁数を指定して区切っていくのか正直分かりません。 どなたか教えて頂けないでしょうか? 何卒、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CSVファイルに変換します。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
下記が多少とも参考になれば。 ーー >Excelでインポートしたいと エクセルデータとしたい、ということかな? ーーー 質問者は社内でどういう立場の人? 普通こういうデータを扱うのは、(1)当社のシステム部関係の人(2)会社のシステムを 請け負っている専属指定業者(3)経理部の有志の人などと思う。 このデータ(社内データ)を、統計や他の資料として使う場合も、いくらEUC時代だといってもシステム部を通じて、エクセルのデータになったものをもらう、とかではないですか?秘密漏洩の心配はしないのか? 会計関連データなどでミスなどがあると責任問題ですよ。データ管理の上からも、緩すぎると思う。質問振りからしても、あまりコンピュター処理になれていないのに、必要と思っ、こんな無料サイトに気軽に質問しているように取れる。 VBAはできるのかな。フリーソフトのようなものをのぞんでいるのかな?それならVECTORのようなところを探してみるとか。 まる写ししないとできないレベルではないか? 銀行がCSVデータで渡してくれ(るサービスがあ)れば、エクセルに読み込むのは何もいうことないでしょう。 ーー 銀行によっては、振込データをCSVデータで渡しても良い銀行もあるようだ。 しかるべき人が、取引金融機関に希望すれば、そういう例はあるようだ。 http://www.japannetbank.co.jp/business/baplus/service/web_all/manual.html ーー (1)しかし全銀フォーマットデータは、パソコンが使われる前の時代(1970ごろ?)からあって、データ項目について、その中身を表すTAGや見出しのようなものを省き、1レコードの各項目ごとに固定長で考え、必要ならば各項目ごとに何バイト目から何バイト目までを文字列に切り出して使う。さらに数値文字項目なら、数値化して(加算などに使う)全銀フォーマットは、その何文字目から何文字はこういう意味というのは、全銀協(銀行の業者団体)のシステム関連部会で決めたわけ。 (2)もうひとつ、使われている文字コードですが、当初は大型機EBICDICコードが主流だったが、今はJISやシフトJISが多いと思う。当初は数字、記号、カナまでで、当初漢字は使えなかったが今はそうもいかない。この文字コード体系に注意。 (3)パソコンデータと違い、大型機の思想の流れで、1つのファイルにヘッダーとかトレーラーとかいうものが現れる場合がある。 (4)ファイルのはじめと、終わりを示すBOF、EOFなどに注意 (5)1レコードの項目データの中で、改行やタブなどは使わせないことが多いが、あるか、ないか注意が必要です。 (6)VBAで、テキストデータを切り出すなら、1レコードの各項目の項目長を配列に出も持って、VBAでMID関数を使って、左の項目から順に切り出して、 ・セルの値としてセットする。または ・CSVファイルを作るため、カンマで区切りデータを作る (7)その場合、文字数(漢字などの場合)なのか、バイト数なのか、VBAで処理することとの関連で、しっかりつかんでおく必要がある。 VBAでの切り出し例 例データメモ帳 2件 aaaaa 1234567890 bbbb 0912345678 ーー VBEの標準モジュールに '==全データチェック表示用 Sub test01() Open "固定長例.txt" For Input As #1 While Not EOF(1) Input #1, x MsgBox x Wend End Sub '==項目を分離しエクセルアクチブシートの各行、各列にセット Sub test02() i = 1 j = 1 b = Array(5, 3, 4, 3) <--ここはファイルの項目に応じて変える Open "固定長例.txt" For Input As #1 While Not EOF(1) Input #1, x s = 1 For k = 0 To UBound(b) MsgBox Mid(x, s, b(k)) Cells(i, j) = Mid(x, s, b(k)) s = s + b(k) j = j + 1 Next k j = 1 i = i + 1 Wend Close #1 End Sub ーー エクセルの癖で、0に始まる数字の文字列0がを入力すると、0は省かれる。 VBAができれば、これぐらいの簡単な処理なので、たとえ作っても フリーソフトなどというのは、おこがましい。
お礼
お礼の返信が遅くなり申し訳ありません。色々とご助言を頂き有難うございました。imogasiさんの言う通りここでの質問ではありませんでしたね。今後、気をつけます。サンプルコードに関しては参考にさせて頂きます。改めてお礼申し上げます。