• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストファイルから改行コードを削除して読込む方法)

テキストファイルから改行コードを削除して読込む方法

このQ&Aのポイント
  • ExcelエクセルVBAマクロにおいて、テキストファイルから改行コードを取り除いて変数に読み込む方法が知りたいです。具体的には、Wordファイルをテキストファイルに変換した後、改行コードを削除して変数に読み込む方法をご教授ください。
  • また、変数に読み込んだ文字列からかぎカッコ内の文字を抽出して、エクセルに出力する方法も知りたいです。例えば、「こんにちは」と言いましたという文字列から、「こんにちは」という部分を抽出してエクセルに出力する方法をご教授ください。
  • 以上が質問の内容です。よろしくお願いいたします。

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

  • ベストアンサー
  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.3

Windowsの改行はCRLFです。#1さんの仰るとおり、chr(13)+chr(10)ですね。 あるいはvbCr,vbLf,vbCrLfなんてのもあります。 あとプログラム本文は良くないです。 最低でもこう書くべきです。 '------------------------------------------------- dim objStream as Object set objStream = CreateObject("Scripting.FileSystemObject").GetFile("C:\sample.txt").OpenAsTextStream a=objStream.readall objStream.Close '-------------------------------------------------- もとのソースだと、...OpenAsTextStreamと書いた時点でテキストを開いてます。 1回目と2回目は別のモノ。つまり2回開いてて、1回目は開きっぱなし。 >かぎカッコの内部にある文字を抽出 これはご自分で考えてみて下さい。 例えば、crlfを除去したのなら b=replace(a,"「",vbcr) b=replace(b,"」",vbcr) とでもしておいてvbcrでSplit()すれば配列の奇数番目が括弧の中身です。 括弧が閉じてない場合とか半角だったりする場合とかもあるので注意ですね。 一番良いのは正規表現を使う方法ですが、これはちょっとハードルが高いでしょう。

rotawota7
質問者

お礼

返事遅くなって申し訳ございません。 アドバイスを参考にトライしてみたところ、うまく出来ました。 本当に助かりました。ありがとうございます。

その他の回答 (2)

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

ReadAllを使わないで、1レコード(復帰・改行まで)を読み込む仕組みは使えないのか。 ーー 質問の表現だが、コンピュター処理は(ファイルを扱うものは)すべてファイルを読んで、変数にセットしてから、色々処理を行うものです。そのとき(主に順編成ファイルのことだが) (1)ファイルを終わりまで読み込むもの。ReadAll的なもの (2)レコード単位で変数に読み込むもの がある。 >この改行コードを削除したうえで変数aに読み込みたいのですが可能でしょうか 変数Xに読み込んだものから、復帰改行や、改行を目当てに (1)区切る (2)他のものに置き換える。例えば空白に置き換えるという意味で、削除 などをするはず。 あるいは上で言った、1レコードを読む仕組みを使って、1レコードごとに読み込む。 これは1レコードをどういう風に区切る仕組み化、処理系によルので勉強のこと。 OSで違ったりするのは有名な話。 表現が適当でない。 改行コード、復帰改行コードを白兄で、VBSCRIPTのファイル関係を暑かったり、プログラムをすることは、速すぎる。 ーーー こんな質問コーナーに、わざわざ質問しなくても、Googleで「VBA 改行コード」「VBA 改行コード削除」などで照会すればすぐ判ること。 http://www.kantenna.com/pg/2009/12/excel_vba.php など多数。

rotawota7
質問者

お礼

返事遅くなって申し訳ございません。 みなさんからのアドバイスを参考にトライしてみたところ、うまく出来ました。 本当に助かりました。ありがとうございます。 返事遅くなって申し訳ございません。

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

改行コード chr(13) chr(10) replace(replace(・・・,chr(13),""),chr(10),"")

rotawota7
質問者

お礼

返事遅くなって申し訳ございません。 改行コードとはchr(13)、chr(10)だったんですね。 みなさんからのアドバイスを参考にトライしてみたところ、うまく出来ました。 本当にありがとうございます。

関連するQ&A

専門家に質問してみよう