エクセル2003のマクロでテキストファイルのデータを置換しようとする方法

このQ&Aのポイント
  • エクセル2003のマクロを使用して、テキストファイルのデータを置換する方法について教えてください。
  • 具体的には、半角スペース2つを半角スペース1つに置換したい場合の方法について知りたいです。
  • また、入力データの左の数値データを半角スペースに置換し、スペースを削除する方法も教えてください。
回答を見る
  • ベストアンサー

エクセル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 ・ ・ ・

  • ddtqp
  • お礼率68% (139/203)

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>>ということは、最終的に、「a)」は「半角スペース 1 個」に、 >>「左の数値データ」は「削除」したいと>いう意味でしょうか? >その通りです! >スペース区切りで5つめのデータは削除するようにしています。  概ね理解することができました。 >Trimでスペースを削除 と書いていらっしゃいますが、実は、ワークシートの [TRIM 関数] と、VBA での [Trim 関数] とでは、少し挙動が違っておりまして、前者は、 >文字列に複数のスペースが連続して含まれている場合、 >単語間のスペースを 1 つずつ残して、 >不要なスペースをすべて削除します。 後者は、 >先頭と末尾の両方のスペース (Trim) を >削除した文字列を表すバリアント型の値を返します。 (以上、それぞれの ヘルプ から)  で、例えば {左の数値データ}{スペース}{2つめのデータ}{スペース}{3つめのデータ}{スペース}{4つめのデータ}{スペース}{5つめのデータ}・・・ となっているものとして、この中の「a)」はとりあえず削除し、最終的に {2つめのデータ} {3つめのデータ} {4つめのデータ} となるように成形したい、ということとして、ここから勝手に話を進めます。  なお、全角の スペース が入っていても、これも 半角スペース 同様に処理します。 >LinInputでデータを1行ずつ読み込み  その読み込んだ データ を myStr とします。 Dim myStr As String Dim myArr As Variant '「a)」を削除 myStr = Replace(myStr, "a)", "") '全角スペース を 半角スペースに置換 myStr = Replace(myStr, " ", " ") '不要な スペース を削除 myStr = Application.WorksheetFunction.Trim(myStr) '残された文字列を配列に分割 myArr = Split(myStr, " ") '配列の中から「2・3・4つめのデータ」 を スペース で結合 myStr = Join(Array(myArr(1), myArr(2), myArr(3)), " ")  以上により、下記のデータが返ってきます。 55567 444 987 456b) 2345 789 123 456 888  お示しの回答例とは「スペース」の部分が異なるようですので、上記の コード を参考に、いろいろとお試しください。

ddtqp
質問者

お礼

repleceとJoinの勉強になりました! おかげさまでばっちりできました。 ありがとうございます!

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

#大して難しい処理のように思えませんが、回答がつきませんね。 >a)を半角スペース2つに置換したい >左の数値データも半角スペースに置換し、 >Trimでスペースを削除しようと思います。 ということは、最終的に、「a)」は「半角スペース 1 個」に、「左の数値データ」は「削除」したいという意味でしょうか?  もし、上記の通りだとして、 2行目)「a12」はどうなったのでしょうか? 3行目)「b17」はどうなったのでしょうか?  現実に目の前にある「テキストファイルのデータ」をよくご覧になって、「本当にしたいこと」をお書きください。

ddtqp
質問者

お礼

回答ありがとうございます。 >ということは、最終的に、「a)」は「半角スペース 1 個」に、「左の数値データ」は「削除」したいと>いう意味でしょうか? その通りです! >2行目)「a12」はどうなったのでしょうか? >3行目)「b17」はどうなったのでしょうか? すみません。説明忘れてました! スペース区切りで5つめのデータは削除するようにしています。

関連するQ&A

  • テキストファイルのデータの追加

    二つのテキストファイルを結合というより新規のデータだけを追加したいのですが、そのようなコマンドはあるのでしょうか? 今は copy a.txt+b.txt c.txt copy c.txt b.txt を動かした後、テキストbを開いてテキストaとテキストbの重複しているデータを手作業で消しています。 また、上の2行のコマンドを1行にすることは可能でしょうか?

  • エクセルのマクロでテキストファイルを生成するには?

    いつもお世話になっております。 マクロで エクセルのSheet1上のA1:A5のデータをコピーして 『吐き出し.txt』というテキストファイルを生成したいのです。 どのようなマクロを書けばよいかご教示ください。 通常の「txt形式で保存」ですと、 データ内に「,」があるため、 テキストファイルだとデータの両端に「"」がついてしまうため 不具合が発生するのです。 なんとかなりませんでしょうか。 よろしくお願いいたします。

  • テキストファイルの一部置換したファイルをたくさん作りたい

    テキストファイル(a.txt)があるのですが このファイルの一部の文字列aaaをbbbに置換したファイル(b.txt)を作りたいです。 また文字列aaaをcccに置換したファイル(c.txt)も作りたいです。 続けてd.txtやe.txt・・・と作っていきたいですが簡単にできるフリーソフトはないでしょうか? 現状はa.txtを開いてaaaをbbbに置換して、別名で保存するのを繰り返し(10回以上)するので大変です。 このようなことが楽にできるフリーソフトがあれば教えてください。

  • エクセル「検索と置換」を閉じるマクロ

    エクセルの「検索と置換」をマクロボタンで閉じることは可能でしようか。 ファイルAとファイルBがあり、ファイルAの中で「検索と置換」の機能を使い検索作業後、マクロボタンでファイルBに移動して入力作業をする。 繰り返し上記の作業をしています。 ファイルBに移動したときに「検索と置換」の画面が不要なためファイルAからファイルBに移動した時点で「検索と置換」の画面を閉じるマクロをファイルAからファイルBに移動するマクロに付け加えたいのですが、「マクロの新しい記録」では記録できませんでした。 宜しくお願いいたします。

  • 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を使用しております。

  • Excelマクロ テキスト貼り付け

    テキストファイル(*.txt)を開き、A1に貼り付けるマクロを教えてください。 B列には計算式があるため、A列にテキストの内容を貼り付けたいです。 また、テキストのファイル名はランダムなため、 フォルダを開いて、テキストを開きたいのですが教えてください。

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

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

  • バッチファイルでテキストファイルの中身を置換

    dir C:\*.zip /b /a-d /s > ジップ.txt で作成した、ジップ.txtがあります。 このテキストファイルをパス名を削除してファイル名のみに置換したいのですが、どなたか教えて頂けますか?

  • excelマクロで特定文字を置換したい

    質問させてください。 excelマクロで特定文字を置換したい思っています。 <sample.txt> 【作業前】 ----------------------------------------- 実行日時     :2006/07/13 15:29:14 作業者アカウント名:sghdfrsgdsz 作業a名   :zsdfgdrfg 作業b名 :zdfgfdzdg 作業c名  :zdgdfgzdg ---------------------------------------- <sample.txt> 【作業後】 ---------------------------------------- 2006/07/13 15:29:14 sghdfrsgdsz zsdfgdrfg zdfgfdzdg zdgdfgzdg ---------------------------------------- 以下のような動作を実現したいと思っています。 1.上記の<sample.txt>をエクセルで開きます。 2.cell(A,1)を選択し、"実行日時     :"を""に置換します。 3.すべての行を置換します。 4.ファイルを閉じます。 ファイルを開くところ OpenFileName = strPath & "\" & Filename & ".txt" 'ファイル名を指定 Workbooks.Open OpenFileName は分かるのですが、セルを選択し、置換するところが分かりません。 どなたか知っていらっしゃる方いらっしゃいましたら教えていただけないでしょうか。 以上、大変お手数ですが宜しくお願い致します。

  • マクロについて

    毎週、複数のテキストファイルを1つずつ開いて データをコピーしてエクセルに張り付ける作業があり 時間がとてもかかってしまいます。 マクロを調べても分からず、どうかお力を貸してください。 フォルダ内にテキストファイルが50個あります。 エクセルの1つのSheetに、フォルダ内テキストファイルを 下記のようにデータを1つにまとめたいです。 テキストファイルのデータは1行目~4行目までデータが入っていたりいなかったりです。  A列             B列         C列        D列         E列 ファイル名1.txt     データ1行目   データ2行目    データ3行目   データ4行目 ファイル名2.txt      データ1行目   データ2行目    データ3行目   データ4行目    ・    ・    ・ 以上、宜しくお願い致します。

専門家に質問してみよう