MS Office Excel 2003でテキストデータファイルを読み込む方法

このQ&Aのポイント
  • MS Office Excel 2003でテキストデータファイルを読み込む方法を紹介します。
  • テキストデータファイルをExcelに読み込む手順として、セルにファイル名を入力し、データを転記する方法を説明します。
  • また、他のファイルを読み込む際にはセルに新しいファイル名を入力することで切り替えることができます。
回答を見る
  • ベストアンサー

MS Office Excel 2003でテキストデータファイルを読み

MS Office Excel 2003でテキストデータファイルを読み込む方法 1111.txt 2222.txt 3333.txt というテキストデータファイルがあり、中身は添付画像の様になっています。 (テキストファイルは同じフォルダに格納されています) このテキストデータをExcelに読み込みたいのですが、以下の様な動作をして欲しいと思っています。 (1)セルA1にテキストデータファイルのファイル名(拡張子は省く)を入れる (2)セルA2から下に、添付ファイルのA列のデータが入り、セルB2から下にE列のデータが入る (3)セルA1に別のファイル名を入れると、そのファイルのテキストデータに切り替わる このような事は可能なのでしょうか? もし可能であれば教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

主目的となる テキストファイル1ファイル固定で指定しセルへ設定させるサンプルです ’はコメント行の意 できるだけ簡単なコマンドで作成してます。体裁悪い分はご了承願います。 基本的な動きが分かればいろいろな場面で使えると思います。 応用で、こういうのに追加機能としてファイル選択ダイアログ表示とかできます。 参考にどうぞ。 Sub VBATEXT() Dim inFilePathName As String * 256 Dim WK_ROW As Long Dim WK_READ_DATA As String '「結果」シートに結果を残す Sheets("結果").Select Range("A1").Select '最初に処理するのは1行目 WKROW = 1 '入力するファイル名は・・"C:\1111.TXT" inFilePathName = "C:\1111.TXT" Open inFilePathName For Input As #1 'イメージ 'A列 B列 C列 D列 E列 F列 'AAAA/AA/AABBBBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFFFFF 'AAAA/AA/AABBBBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFFFFF 'AAAA/AA/AABBBBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFFFFF '1行目各A列~E列にタイトルを設定します。Cells(行, 列) Cells(WKROW, 1) = "A列" Cells(WKROW, 2) = "B列" Cells(WKROW, 3) = "C列" Cells(WKROW, 4) = "D列" Cells(WKROW, 5) = "E列" Cells(WKROW, 6) = "F列" '1行ずつ読み込んで終わり(EOF)になるまで続ける。DO~LOOP Do Until EOF(1) ' 1行ずつ読み込んでWK_READ_DATAに格納 Line Input #1, WK_READ_DATA ' 処理する行を1つずつUP WKROW = WKROW + 1 ' WK_READ_DATAの一部分をセルの値とします。 Mid(文字列, 開始位置, 長さ) Cells(WKROW, 1) = Mid(WK_READ_DATA, 1, 10) Cells(WKROW, 2) = Mid(WK_READ_DATA, 11, 10) Cells(WKROW, 3) = Mid(WK_READ_DATA, 21, 8) Cells(WKROW, 4) = Mid(WK_READ_DATA, 29, 8) Cells(WKROW, 5) = Mid(WK_READ_DATA, 37, 8) Cells(WKROW, 6) = Mid(WK_READ_DATA, 45, 11) Loop Close #1 'ファイル1つ分が終わりCLOSE Range("A1").Select MsgBox ("終了") End Sub よく使うところを提供します。実現に近いことは記載あります。 すぐに役立つエクセルVBAマクロ集 http://www.asahi-net.or.jp/~zn3y-ngi/ EXCELでお仕事 http://www.asahi-net.or.jp/~ef2o-inue/menu/menu01.html そのまますぐ使える回答が欲しい場合は、 すみませんが、ほかの方のを使ってしてください。

77morimori
質問者

お礼

お礼遅れ大変失礼致しましたm(__)m

その他の回答 (3)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

参考になるサイトです。 『すぐに役立つエクセルVBAマクロ集』というサイト ブックシート関係やFAQも見ておくと良いです。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

VBA(マクロ)で可能になります。 VBA(マクロ)についてまとめてあるサイト等で予習しておいてください。 よく使うところを提供します。 EXCELでお仕事 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200.html 『マクロを「書いてみた」「動かした」「ダメでした」』 では上達しませんし、説明やコメントもない回答例をそのまま使うと あとで再度追加質問になったりして苦労します。 対応例を考えるにあたり2点教えてください。 1)各ファイルのA列とB列の間は半角空白が並んでいるのでしょうか。 (以降右列も同じく) 2)1つ目のファイルを取得したあと2つ目はどうしますか。 フォルダ内テキストをすべて同じブックにシートごとにまとめて格納させることも可能です。 イメージでは、 A1にファイル名(フォルダ名?)を記載 →マクロを実行 →(マクロにて) ファイルを1行ずつ読み込み、 空白があるまでを判定し1つのセルとみなす、順次セルへ配置させる、 ファイルにレコードが無くなるまで繰り返し →(マクロ終了) →次のファイルの繰り返し 別途ACCESSがあれば ACCESSでデータインポートしてテーブルへ格納し そこからEXCELへエクスポートという手もあります。 ACCESSがあればこっちのがウィザード従えるので分かりやすいかも しれません。

77morimori
質問者

補足

早速のご回答ありがとうございます。 不明点下記に記しました。 よろしくお願いします。 1)各ファイルのA列とB列の間は半角空白が並んでいるのでしょうか。 (以降右列も同じく) →はい。半角空白が並んでいます。 2)1つ目のファイルを取得したあと2つ目はどうしますか。 →フォルダ内テキストをすべて同じブックにシートごとにまとめて格納させたいです。 会社PCのためACCESSは入っておらず、EXCELとなってしまいます。

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

ツールメニューのマクロのセキュリティを中にしてエクセルを再起動する データを転記したいエクセルを開く 当該のシートのシート名タブを右クリックして,コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range)  if target.address <>"$A$1" then exit sub  if target = "" then exit sub    dim myPath as string  dim buf as string  dim a  dim n  dim i  myPath = "C:\test\"  ’←テキストファイルを入れたフォルダのパスを正しく記入  if dir(mypath & target.text & ".txt") = "" then   msgbox target & ".txt is not found"   exit sub  end if  application.screenupdating = false  application.enableevents = false  range("A2:A" & application.max(2, range("A65536").end(xlup).row)).entirerow.delete shift:=xlshiftup  n = freefile  open mypath & target.text & ".txt" for input as #n  line input #n, buf  line input #n, buf  i = 1  do until eof(n)   line input #n, buf   a = split(application.trim(buf), " ")   i = i + 1   cells(i, "A") = a(0)   cells(i, "B") = a(4)  loop  close #n  application.enableevents = true  application.screenupdating = true end sub ファイルメニューから終了してエクセルに戻る A1セルにファイル名(拡張子無し)を記入する。

関連するQ&A

  • ファイル操作について、テキストファイルの書き換え

    よろしくお願いします。 データファイルAからデータを取得して、テキストファイルBの内容の一部を取得したデータで書き換えるという操作を行うプログラムを作りたいです。 具体的には、 データファイルA[A.txt]の中身 111 222 333 444 テキストファイルB[B.txt] 文字列1="123" 文字列2="234" 文字列3="345" 文字列4="456" というような二つのファイルを読み込み、B.txtの""で囲まれた部分を、A.txtで取得したデータで置き換えるような操作を行いたいのですが・・。 使用する言語としてはスクリプト言語であるperl、もしくはプログラム作成経験があるCを使用しようと思っています。(perlは未経験で入門書を読んでいるレベル)

    • ベストアンサー
    • Perl
  • PHPで複数のテキストファイルを読み込みたい

    PHPを勉強中です。 どうしても自力で解決できないので助けてください。 やりたい事は、 「複数ファイルの内容を読み込み、  それらのデータをcsvのセルに入れたい。」のです。 Aというフォルダに、複数のテキストファイルがあります。 これら各ファイルの内容をそれぞれ取得して 「○○.csv」のB列に上から順々に書き込んでいきたいのです。 Aフォルダに入っているテキストファイルは連番を想定しています。 A/ 0001.txt 0002.txt 0003.txt : フォルダに入っているテキストファイルの数はいろいろです。 3枚のフォルダもあれば100枚のフォルダもあります。 これらのファイルの内容を、それぞれ取得して 用意されているcsvファイルの特定のセルに テキストファイルの数だけ順番に入れていきたいのです。 ○○.csv A列  |  B列  |  C列  | △  |0001.txt内容|  △  | △  |0002.txt内容|  △  | △  |0003.txt内容|  △  | : : プログラムのヒントを教えていただければ嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • エクセルのセルをテキストファイル出力する方法教えてくれませんか。

    初心者ですが、 どなたか、エクセルのセル1つを、 テキストファイル出力できる方法をご存知ですか? 詳細には、 エクセルファイルの列Aの内容がテキストファイル名で、 列Bの内容が本文であるテキストファイル出力を 約3000個、順次したいと考えています。 例えば、エクセルファイルに以下のようなデータを保持しているとします。 列A  列B 001  あいうえお 002  かきくけこ 003  さしすせそ この場合、001.txtは本文が「あいうえお」、 002.txtは本文が「かきくけこ」、 003.txtは本文が「さしすせそ」というように、 エクセル1行についてテキストファイルを1つ作成したいと考えています。 このような処理を短時間で実施するのに適した方法をご存知の方がいらっしゃいましたらご教示いただければと思います。 どうぞよろしくお願いいたします。

  • データ.mydファイルのテキスト化

    データベースのデータとして、**.frmと**.mydと**.myiの3つがありますが、この中身を開きたい思い、**.mydの拡張子をtxtに変えましたが、一部のみ文字化けしてしまいます。完全なテキストファイル化の方法を教えてください。 もしくはcsv化やエクセルで表形式にすることはできますか?

    • ベストアンサー
    • MySQL
  • データのテキストファイル抽出

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

  • テキストファイルの内容を変数に格納したい

    $(function() { $item = ""; $.ajax({ url: 'data/data.txt', success: function($data) { $item = $data; } }); alert($item); }); 上記のように外部のテキストファイルを読み込んで、その中身の文字列をajaxの外で宣言している変数に格納したいのですが、何も格納できていません。 テキストファイルのパスが間違っているということや、中身が何もないということはありません。 ajaxのsuccess内にalertを置いた場合は値が正しく表示されるのですが、ajaxの外ではやっぱだめです。 ajaxではなくloadでやろうとも思ったのですが、loadの場合はHTML上のタグにしか出力できないので、今回の目的には合いません。 なんとかして、変数にテキストファイルの中身を渡せないのでしょうか。

  • テキストファイルの編集

    以前にもperlでのプログラミングについて質問させて頂いた者です。 前回と被る所があるのですがちょっと複雑で、私の手に負えないので質問させて頂きます。 よろしくお願いします。 データファイルAからデータを取得して、テキストファイルBの内容の一部を取得したデータで書き換えるという操作を行うプログラムを作りたいです。 具体的には、 データファイルA[A.txt]の中身 100 111  200 222 300 333 400 444 テキストファイルB[B.txt] 1st step 文字列1 start="123" end="134" 2nd step 文字列2 start="234" end="245" 3rd step 文字列3 start="345" end="356" 4th step 文字列4 start="456" end="467" という二つのファイルを読み込み、B.txtの""で囲まれた部分を、A.txtで取得したデータで置き換えるような操作を行いたいのですが・・。 A.txtの一行目で取得したデータをB.txtの1stステップの始まりと終わりの値として置き換え、それを二行目は2ndと同様の操作を行うようなプログラムを作りたいです。 もともとこのような操作を行いたくて前回のような質問をし、それを参考にし今日まで考えましたがやはり難しく、また頼りたいと思います。。 どうかよろしくお願いします。

    • ベストアンサー
    • Perl
  • 1行単位のデータをテキストファイルに保存するマクロ

    エクセルに入力済みの連続したデータを1行単位で以下のような内容でテキストファイルを作成し、 かつテキストファイル名を、セルに入力されている文字を使って保存するマクロを作りたいのですが、 どのようにしたら良いのでしょうか?よろしくお願いします。 *エクセルシート (ファイル名:aaa.xls シート名:sheet1 エクセルシートがあるフォルダ名:yyy) _|A |B |C | 1|x |y |z | 2|a1|a2|a3| 3|b1|b2|b3| *テキストファイル(保存するフォルダ名:zzz) ---テキストファイルの内容(ファイル名:a1.txt) x a1 y a2 z a3 --- ---テキストファイルの内容(ファイル名:b1.txt) x b1 y b2 z b3 --- エクセルはExcel2000でWindows2000を使用しております。

  • テキストファイルの中身について

    あるフォルダしたのテキストファイルとそのファルダしたのフォルダ中のテキストファイルについて、 例えば、”日本”と言う文字が有ったら、そのテキストファイル名を表示するようなの機能を実現したいです。 何を使ったら、いいですか? サンプルが欲しいです。 教えてください!お願いします。 ーーーーーーーーーーーーー temp-------a.txt |------b.txt |------temp1 |--------a1.txt |--------b1.txt       … などなど、 テキストファイルの中身に、”日本”という文字が存在したら、そのテキストファイル名を出力 ーーーーーーーーーーーーー

  • csv ファイルのデータを文字列として開く

    csv ファイルを開いた時に、最初から 全てのセルの 「セルの書式設定 > 分類」を「文字列」にすることは出来ますか? 一度、拡張子を txt に変えて 「テキスト ファイル ウィザード」 「列のデータ形式」を文字列にするのは知っているのですが、 ・拡張子を変える ・エクセルを開く ・ファイルを選ぶ ・全ての列を選択 ・文字列にする と非常に面倒なので csv ファイルのままでファイルを開いたら 最初から文字列にする方法を探してます。 お願いします。

専門家に質問してみよう