• 締切済み

Excelのマクロで改行を含んだテキストファイルの中身を1つのセルに書

Excelのマクロで改行を含んだテキストファイルの中身を1つのセルに書き込みたいです。 ネット上を探してみると、1行ごとにわけて各行に書き込むマクロは見つかったのですが、 もっと原始的にファイルを開くのダイアログからテキストを指定して、その中身をただ単純にセルに入力したいです。 どのように記述すればよいでしょうか??

  • yskfr
  • お礼率32% (25/76)

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

参考URLの田中先生のコードを借用して一行付け足すと、下記でできます。 Sub test() Dim FSO As Object, buf As String Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.GetFile("C:\Sample.txt").OpenAsTextStream buf = .ReadAll .Close End With Set FSO = Nothing 'buf = Replace(buf, vbCrLf, vbLf) ActiveCell.Value = buf End Sub セル内改行はVbLFなので、vbCrLFから置換が必要かと思いましたが、しなくても大丈夫な様です。

参考URL:
http://officetanaka.net/excel/vba/filesystemobject/textstream07.htm
  • eggpan
  • ベストアンサー率0% (0/0)
回答No.2

バイナリモードで開いてGetで一度に取得というのではいかがでしょうか。 テキストファイルの文字コードによっては文字化けしそうなので変換が必要そうですが・・。 以下サンプルです。 Sub Sample() Dim intFileNum As Integer Dim strFileName As String Dim strBuf As String ' ファイルを開くダイアログを表示してファイル名を保存 strFileName = Application.GetOpenFilename() ' ファイル番号を取得 intFileNum = FreeFile ' ファイルの大きさ分のバッファを確保 strBuf = Space(FileLen(strFileName)) ' ファイルをバイナリモードで開き内容を取得 Open strFileName For Binary As #intFileNum Get #intFileNum, , strBuf Close #intFileNum ' A1セルに書き込み Range("A1").Value = strBuf End Sub

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

この質問ぶりからすると、テキストファイルというものの理解が十分で無いようだ。 区切り文字のことも書いてない質問だから。 テキストファイルで、エクセルのシートと親和性の良い形式は (下記でDはDelimiter区分文字を表す。 http://www.sophia-it.com/content/delimiter デリミターとは、「カンマ」、「スペース」、「タブ」など(1半角英数の決った1つ)である。) 項目1+D+項目2+D+項目3+D+・・・+改行(+は直後に続いて行くことを示す) 項目1+D+項目2+D+項目3+D+・・・+改行 ・・ (本当は「紐」(String)のようにレコード1+レコード2+・・順につながっている。) の形式だ。ただし項目nが空白(データなし)の場合は「D+D」の場合もある。 改行のコードはどういうものか知ってますか。 OSのIOCSの方で、ある言語がデータを読み込むと、改行までを1レコードとして変数に入れてくれる指令がある場合が多い。 VBAの場合は Line Inputである。 GoogleでLine Inputで照会してみること。 http://officetanaka.net/excel/vba/statement/LineInput.htm ほか沢山在る。こんなの読んで質問してますか。 ーー 1レコードを読むたびに変数にデータが入るが、これをエクセルのシートの各列に分けて代入したいわけ。 これに適したのがVBAのSplit関数だ。 http://officetanaka.net/excel/vba/tips/tips62.htm など多数。 ーー 後は ・ファイルの1レコードを読むー>変数へ ・その変数をSplitでデリミタで分割ー>配列に ・項目数=シートの列数だけ繰り回して、セルに代入。 のレコード数分の繰り返しがプログラム。 ーー ファイルのレコードの終わりの判定は勉強のこと。 ==== エクセルには「データ」メニューに「区切り文字」があるのをご存知か。 A列の各行にデータを入れて、その後 これをマクロの記録を取り、そのコードを使う手もある。 ーーー >どのように記述すればよいでしょうか 丸投げ的にコードのことを聞く前に、その前に、上記のような、勉強することがあるといいたい。 ーー 参考 上記で ・その変数をSplitでデリミタで分割ー>配列に ・項目数=シートの列数だけ繰り回して、セルに代入 といったが、繰り回ししなくても、エクセルVBAの場合 Sub test01() s = "aaa,111,東京" t = Split(s, ",") Range("A1:c1") = t End Sub こういうこと(一発代入のコード)も、やってみると、出来るようだ。

関連するQ&A

  • 改行されたテキストをエクセルにセルに分けて移すには

    改行されたテキストをコピーしてエクセルに貼り付けるとひとつのセルにまとめて入ってしまいます。 テキスト文書の改行ごとにセルに分けて移すにはどうしたらいいのでしょうか。 2000 2001 2002 などをExcelのセルに行をわけて移したいのですが

  • テキストファイルをエクセルに落としたい

    1行だけのテキストファイルが1000ファイル位あります。 ※1行の長さは5000文字位あります。 それをエクセルのセルに1つずつ改行をしないで入れて行きたいのですが、 手作業ではしんどく良い方法はないでしょうか? よろしくお願いします。

  • エクセルVBAのテキストボックス改行について

    質問させて頂きます。 今VBAを使っているのですが TextBox内の改行がうまくいきません。 フォーム上にテキストボックスを置いて5~6行表示できる大きさにして、 (テキストボックス内に書いたものを保存ボタンでエクセル内の指定部分に反映させるコードを書き) それをマクロから開いて文字を入力している時に エンター押せば改行できると思っていたのですが出来ません。 CtrlやAlt押しながらもダメでした。 テキストボックスのプロパティ内に行を指定できる何かがあるのでしょうか? 色々いじりすぎて元に戻せなくなりつつあったので 質問させて頂きました。 ご存じの方おられましたら是非教えて下さい。 よろしくお願いします。

  • 指定セルにテキストファイル読み込み

    外部テキストファイル(区切りなし。改行あり)をアクティブな1つのセル内に読み込ませたいと考えています。 セルを指定してマクロ実行すると、読み込みファイルの指定を行うフォームが立ち上げることは可能でしょうか? 何卒ご教示頂ければ幸いです。

  • エクセルのセルの中身をhtmlファイルで簡単に保存させたい?

    エクセルのセルの中身をhtmlファイルで簡単に保存させたい? エクセル2003を使っています。 仮に A1にファイル名(index.html)  B1にhtmlの中身 A2にファイル名(tesuto1.html) B2にhtmlの中身 A3にファイル名(tesuto2.html) B3にhtmlの中身 以下同様に続く があったとします。 いつもはセルBのhtmlの中身をコピーしてエディタに貼り付け、ファイル名を指定して保存(Aのセル)していたのですが、手動でやるのが面倒なのでマクロを使って簡単にやりたいのですが出来るでしょうか? マクロ経験なしの素人ですがよろしくお願いします。

  • エクセルのセル内改行のエクスポートについて

    システムの設計で、人が手入力した情報をtsvファイルにエクスポートして、そのファイルをシステムで取り込もうと検討しています。 けれども、元ファイル内に、エクセルのセル内改行が含まれていて、それをどうしても何かの記号に置換して、改行を詰めてテキストファイルに吐き出すことができません。 やりたいことは以下になります。 1.エクセルの改行を、テキストに吐き出すときには詰めたい。 2.テキストファイルで、改行は詰まっているけれど、変わりに別の文字「"」や「|」などに置換されていたい。 ややこしいですが、どなたか教えてください!

  • セルで指定した名前のテキストファイルをインポートするマクロの作り方

    例: A1セルに5,B1セルに1を入力。(5月1日を表しています) その後マクロを実行し、0501.txtという5月1日に相当する テキストファイルをインポートするというものです。 該当のフォルダ内には各日付ごとのテキストファイルが 複数存在しており、インポートしたいテキストファイル をエクセルファイルのセル上で指定するのが目的です。 インポートするファイル名を固定しないというマクロの 作り方がわかりません。 どうぞよろしくお願いします。

  • Excelでセル内改行

    お世話になります。 早速ですがExcelで複数のセルに文字列が入力されている時、それらの文字を結合する場合はCONCATENATE関数を使いますよね? で、この応用(なのか判りませんが)で例えばセルA1に"改"の文字が、セルB1には"行"の文字が入っているとき、セルC1に 改 行 と改行させて2行で表示したいのですが、セルC1に"=CONCATENATE(A1,CHAR(13),B1)"とやってもうまくいきませんでした。 Alt+Enterで手入力する以外に関数、マクロ等で何かいい方法がありますか? よろしくお願いします。

  • エクセル 行数指定し一つのセルに改行込で入れる

    日本語が下手でもうしわけないです。 エクセルのマクロにて、行数指定指定したセルを別セルに 改行を含めて入れたいのです。 具体的なやりたいこととしては、 A列に不定期間隔で不定形の文字列が入力されていて、(間は空白) その文字列から文字列の行数を読み、 B列の同じ行数分のセルをひとまとまりとし、 別シートのA1に改行込みで入れる。 次のまとまりはA2に次はA3に… といった動作をさせたいです。 例. 1.A1,A6,A9に文字列があるとする。間は空白 文字列間の行数を読む (1)A1-A5 (2)A6-A8 (3)A9-最終行 2.A列で取得した行数と同じ行数をB列で指定 (1)B1-B5 (2)B6-B8 (3)B9-最終行 3.B列で指定したセルをひとまとまりとして 別シートのA1から順に改行込みで入れる (1)シート2のA1 B1(改行) B2(改行) B3(改行) B4(改行) B5(改行) (2)シート2のA2 B6(改行) B7(改行) B8(改行) (3)シート2のA3 B9(改行) ・ ・ 最終行 ####### マクロでの実現を考えているのですが、 マクロ初心者でさっぱりわかりません。 どなたか、マクロでの記述例を教えて頂けないでしょうか。 また、関数で実現できるのであれば、そちらも教えて頂きたいです。 宜しくお願いします。

  • エクセルで、「セル内改行」を自動化したいのですが・・・。

    今回もお世話になります。 今回の目的ですが、作業の自動化、 もしくは、簡略化にあります。 例えば、以下の様な文字列の書かれた テキストファイルがあるとします。 あああああああああああ。 ああああ、ああああああ、ああああああああああ。 あああああ、ああああああ。 あああああああああああ。 これをこのまま読み込むと、 一行目:A1 二行目:A2 という感じで読み込まれます。 これ自体は、全然問題ないのですが、 その後に、セル内改行(Alt+Enter)を手作業で入れ、 文章を整えているのですが、非常に時間が掛かります。 これをマクロなどで簡略化できるか 調べているのですが、良い方法が見つかりません。 そこで、テキストエディターで、 セル内改行と解釈してくれる記号を埋め込み、 エクセル側で、セル内改行に変換できないだろうかと、 思いつきました。 次のようなイメージです。 ("\n"を、セル内改行文字と仮定します。) あああああああああああ。 ああああ、\nああああああ、\nああああああああああ。 あああああ、\nああああああ。 あああああああああああ。 これを読み込んだら、"\n"の位置で セル内改行が入ったら便利かと・・・。 このやり方以外でも構いませんので、 何か良い方法は無いのでしょうか!? ちなみに、作成したい数は、 大体50ファイル位です。 テキストファイルを 特定のルールに沿ったエクセルに変える作業です。 PC環境は、 OS:Windows XP Home Edition ソフト:Excel 2000,WZ_EDITOR です。 よろしくお願いします。

専門家に質問してみよう