テキストファイルの固定長データのスペースについて

このQ&Aのポイント
  • 固定長データのテキストファイルをExcelで読み込むと、スペース部分が前詰めされてしまうことについて質問です。
  • 質問者は、スペースもそのままカラムとして読み込む方法があるかどうか知りたいと述べています。
  • 質問に対して、手動やVBを使用してスペースを保持したままデータを読み込む方法を教えてほしいとしています。
回答を見る
  • ベストアンサー

固定長データのテキストファイルのスペースについて

固定長データのテキストファイルをExcelで読み込むと、スペース部分が前詰めされてしまいます。 スペースもそのままカラムとして読み込む方法はありませんでしょうか。 例えば次のような固定長データがあるとします; No.  項目名   タイプ   桁数 1    コード    文字    6 2    状態    文字    10 テキストファイルで開くと下記のような表示です(以下、便宜上スペースを”_”で表します); data011________1 data02_________1 data03____1_____ これをExcelにて固定長フィールドのデータとして読み込む際、 フィールドの区切り位置として6カラム目と16カラム目に矢印を置き 全てのフィールドを文字列として読みこむとExcelでは下記のように表示されます;       A列   B列    1行目  data01 1________1 2行目  data02 1 3行目  data03 1 ここで、B2セルとB3セルがそれぞれ _________1 ____1_____ とスペースを保持したままの形で読み込む方法はありませんでしょうか。 手動でもVBでもかまいません。ご教示頂ければ幸いです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

固定長ですがシーケンシャルで読み出すので十分と思います。 Sub macro2()  Dim buf As String  Dim i As Long  Range("A:B").NumberFormat = "@"  Open "c:\test\data.txt" For Input As #1  Do Until EOF(1)   i = i + 1   Line Input #1, buf   Cells(i, "A") = Mid(buf, 1, 6)   Cells(i, "B") = Mid(buf, 7, 10)  Loop  Close #1 End Sub

einsiedler
質問者

お礼

全て理解できたわけではありませんが ご教示頂いた内容にて、こちらの希望する通り カラム数を保持したまま読み込むことができました。 引き続き勉強しつつ、回答頂いた内容を利用させていただきます。 ご回答ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問の書き方だが、テキストファイルの「状態を、スペースは*でも置き換えて、質問に3レコードぐらい書いて質問をすればよくわかる。 これは、データー区切り位置ースペースによって・・・-次へー上向き↑線をdata01のあとにクリックしていれて、行う操作の「結果」の質問ですよね。 (>>フィールドの区切り位置として6カラム目と16カラム目に矢印を置き・・) 現状の質問文では、上記操作のことやデータの状態が判りにくい。 最初のフィールドは、設計上6桁で、必ず6桁のデータが入っているなら6桁セルに移せば仕舞いでは。 第2フィールドは右寄せで20桁の状態はどうなっているのか。 2フィールドで終わりなら、16桁目に矢印を普通入れないのでは。 3/3の画面で7桁以後を文字列に指定しても、セルにセットされたデータでは後尾のスペースは付かない。これが困るのか?

einsiedler
質問者

お礼

申し訳ございませんが、私の日本語能力では 頂いた内容が質問への回答であるとは読み取れませんでした。 ちなみに2フィールドで終わりでも矢印を入れないと 2フィールドのカラム数が果てしない事になってしまう (少なくともこちらが希望するものにはならない)のですが 回答者様の場合は問題ないのでしょうか。 (これもExcelのバージョンによるものでしょうか) 総じてよくわからないのですが、状況として困るので質問させていただきました。 他の方の回答にて対応いたしますので、またの機会には わかりやすい日本語にてご教示いただければ幸いです。 ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

区切り位置の機能を利用するなら、区切り位置ウィザードの3/3で、B列に該当する部分(G/標準と書かれている部分)をクリックして選択して、列のデータ形式で「文字列」にチェックを入れて「完了」してください。

einsiedler
質問者

お礼

ご回答ありがとうございます。 質問文にも記載いたしました通り、いずれのフィールドも 文字列としたのですが、うまくいきませんでした。 Excelのバージョンの問題でしょうか。 (ちなみに当方はExcel2007です。質問文にも書くべきでしたね。失礼いたしました。)

関連するQ&A

  • データのテキストファイル抽出

    データの抽出に困っています。 エクセルデータにてA~Lのフィールドに値が入っていて、1000レコード程のデータを ・1レコードずつ ・A列のフィールドをファイル名に ・テキストファイルに出力 ・テキストファイルには1レコードを縦に、フィールドごと改行して並べる 上記のようにして作成する必要があります。 今までは、 A B C...K L となっているデータの列と行を入れ替えて A B C . . K L としてテキストファイルを作成し、セルAのフィールドをファイル名にして、 手作業で1列ごとにコピー&ペーストして行っていました。 非常に効率が悪いので、全自動化もしくは一部自動化出来ないかと試行錯誤していますが 良い方法が見つけられません。 何か良い方法をご存知の方がおりましたら教えて下さい。

  • テキストファイルのデータをエクセルへコピーのやり方

    よろしくお願いします。 エクセル2000を使っています。 テキストのデータで A1/B1/C1    /はスペースです。 D1/E1/F1    データの長さは全部違います。 A2/B2/C2     D2/E2/F2 A3/B3/C3     D3/E3/F3      ・    ・(続く) といったものがあります。これをエクセルで    A列 B列 C列 D列 E列 1行 A1 B1 C1 D1 E1 2行 A2 B2 C2 D2 E2  ・・・ 3行 A3 B3 C3 D3 E3  (続く)          ・          ・(続く) という感じで別々のセルにいれて貼り付けしたいのです。 テキストデータを別々のセルに貼り付けする方法は 過去ログで「区切り位置」というのをつかえばいいというのはわかりましたが、この場合の複数行にわたるテキストデータをエクセルの1行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。 良い解決法をお願いします。

  • 列数の多いエクセルのデータをテキストファイル(スペース区切り)に変換するにはどうしたらいいでしょうか

    列数の多い(200列くらい)エクセルのファイルをテキストファイル(スペース区切り)1行に保存したいのですがどのようにしたらいいのでしょうか. エクセルを普通にテキスト形式で保存すると200列 1行で保存されず,適当に折り返して3行くらいになってしまいます. 例えば 2行200列をテキストにすると 1行目 1~100列 2行目 1~100列 1行目 101~200列 2行目 101~200列   と4行になってしまいます.これを 1行目 1~200列 2行目 1~200列   のようにしたいのですが可能でしょうか.

  • エクセル2003のマクロでテキストファイルのデータを置換しようとしてい

    エクセル2003のマクロでテキストファイルのデータを置換しようとしています。 下記のようなデータが***.txtファイルに入っています。 a)を半角スペース2つに置換したいのですがどうしたらできるのか、 2文字の置換方法をご存知の方教えていただけないでしょうか? LinInputでデータを1行ずつ読み込み、 左の数値データも半角スペースに置換し、 Trimでスペースを削除しようと思います。 【入力データ】 10  55567 444  987   11  456b) 2345 789  a12 12 123a) 456 888 b17 ・ ・ ・ 【出力データ】 55567 444  987   456b) 2345 789 123 456 888 ・ ・ ・

  • VBAでEXCELから固定長のテキストデータにしたい

    VBAにてEXCELに展開されたデータを固定長のテキストデータに落としたい。 EXCEL側の用件 (1)シート1にボタンを用意して、ボタンをクリックしたらテキストファイルを作成する処理にしたい。 (2)シート2にデータが展開されている。 列は10個程度、行は場合によりけり(MAX65536?) 固定長にする箇所とかはわかるのですが、ボタンクリックしたらシート2を見て、セル(もしくはrange)をどのように取得すればいいのかVBAがよくわからないのです。

  • Excelへのテキストデータの取り込み

    VB2005でテキストファイルを作成し、それをExcelに取り込もうとしています。 123,234,120,200 200,300,400,500 111,222,333,444 のようなファイルを作成し、これをExcelに取り込むと 3行で取り込まれます。 次に 123,234,120,200 200,300,400,500 111,222,333,444 のように文字列の行間に改行文字(chr$(13))だけの行を作成し、 これを取り込もうとすると、 2行おきに読み込まれてしまいます。 メモ帳でファイルの中身を確認すると1行おきになっているのに、 Excelのデータ→外部データの取り込みでテキストデータウィザードを見ると すでに2行おきになっているのです。 1行おきに作成した文字列ファイルを1行おきに取り込むにはどうしたらいいのでしょうか?

  • エクセルを文字数固定でテキスト形式に・・・

    エクセル97です。宜しくお願いします。 エクセルにあるデータをtxtに変換させて、別のプログラムに移したいのですが、問題なのが、受ける側で行毎に頭からの文字数で認識して読み込んでいくのですが、そのままテキスト形式で保存すると、各セルには文字数の多い少ないがある為、各行毎にそのカウントしている文字数の場所が違ってきて、読み込みも各行毎に違ってきます。これをそろえる為に各行毎に文字数を固定させて変換できないかと思っているのですが、 そこで・・・ 列毎に、文字列のある列の文字数を決めておいて、その文字数に満たない場合は、その満たない数だけスペースを入れて変換したいのですが・・・すみません、説明がいまいちですが・・・ 例えば・・・ *A列は文字数を6文字と決める。 *そのA列には、文字列が各行のセルに「あいう」「あいうえお」「あい」などの文字列があります。 *テキスト形式に変換されたときに、 ・「あいう」→「あいう___」 ※(_はスペース) ・「あいうえお」→「あいうえお_」 ・「あい」→「あい____」 と変換させたい。 説明もなんだかへたくそで、ちょっと難しいと思いますが、どなたか良い方法を知りませんか?非常に困っています。宜しくお願いします。

  • EXCELから固定長テキストファイルにうまく書き込めない

    EXCELのデータを固定長で保存するためテキスト(スペース区切り)の形式で保存したのですが、 結果をメモ帳で見てみると途中(237文字)で改行?されていました。 各行先頭から26個のセルに文字や数字がはいっており、セル幅は17前後です。 1レコード1行にするにはどうすればよいでしょうか。 困っております。よろしくお願いします。 実際には次のコマンドで保存しました。 ActiveWorkbook.SaveAs Filename:=file_path & filename_txt1, _ FileFormat:=xlTextPrinter, CreateBackup:=False

  • EXCELのA列に全て入ってしまったデータをセル毎に表示したい。

    あるホームページにTableタグで記述された表があります。 その表をドラッグ選択でコピーし、EXCEL2003にテキスト形式で貼り付けると、EXCELのA列に各行のデータが全て入ってしまいます。 tdタグ毎に、EXCELのセルに振り分けて表示したいのですが、どうすればよいでしょうか。 【試したこと】 1)文字コードを変換すればよいのかと思い、解らないながらもStirling1.31というソフトで文字コードをみると、列の間は[20]というコード?になっておりました。半角スペースで入力したデータも同じく[20]と出ますので、tdタグは半角スペースとして認識されているのでしょうか。 文字列にも普通に半角スペースがまぎれているので、tdのコードのみをどう変換したらよいのかわからず、閉じました。 2)EXCELのファイルをテキスト形式で保存し、開くときにスペース区切りを選んで、区切りたい位置をクリックして、"フィールドの幅"というものを設定したものの、文字の長さが行ごとに違うので固定の幅では上手くセル毎に振り分けられませんでした。 至らない説明で申し訳ありません。ホームページのデータをダイレクトにEXCLEにテキストで貼り付けるという方法からして間違っているのでしょうか。 600件以上あるデータで困っています。 詳しい方ご教授願います。 どうぞよろしくお願いいたします。

  • テキストデータをSQLServerに取込むには

    列区切なし、改行コードなしの固定長データをSQLにコンバートしたいのですが、上手く行かず困っています。 (ファイル形式:テキストファイルバイナリ固定長) ・試した方法  (1)DTSインポート/エクスポート(←もう全然上手く行きませんでした・・・)  (2)BULK INSERT       (←上手く取り出せている自身がない・・・) またコンバート後、SUBSTRINGを使ってデータを取り出し、フィールドにセットしていこうと考えているのですが、これも上手く行きません。 半角・全角文字やスペースが含まれていると、取り出せないのでしょうか?

専門家に質問してみよう