VBAで制御コード付きテキストファイルの読み込み

このQ&Aのポイント
  • EXCEL2003でのテキストファイルのレコード読み込みについて解説します。
  • input text命令での読み込みでは制御コード「■r」が問題となります。
  • オプションや別の命令を使用して解決する方法についても説明します。
回答を見る
  • ベストアンサー

VBAで制御コード付きテキストファイルの読み込み

EXCEL VBAでのテキストファイルのレコード読み込みについて教えてください。 EXCEL2003を使用しており、以下のレコードがあるテキストファイルがうまく 読み込めないのです。 レコード: 1件目「123■r456」 2件目「789■r888」 上記レコードをinput text命令で読みこむと1件目は「123」までしか読み込めず 2件目は「456」が読み込まれます。 3件目は「789」で読み込み終了となります。 本当は1件目が「123456」、2件目は「789」と読み込みたいです。 「■r」はホストコンピュータで使用している印刷イメージの制御コードです。 input text命令にオプションはあるのでしょうか? またinput text命令以外にテキストファイルを読み込む命令はあるのでしょうか? よろしくお願いいたします。

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

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

下記を参考に、readAllで文字列変数に丸ごと読み込んで http://officetanaka.net/excel/vba/filesystemobject/filesystemobject25.htm ■rのところを、Replace関数などで置換して、 それからSplit関数で改行コードで切り分けるのはどうでしょうか。 事前にテキストエディターで、前処理して取り除くという解もありそうですが。 以上、ご参考まで。

zibika
質問者

お礼

回答、ありがとうございました。 mitarashiさんのおっしゃるとおり、実行してみたところうまくいきました。 ありがとうございました。 とても助かりました。

その他の回答 (1)

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

http://officetanaka.net/excel/vba/tips/tips73.htm http://officetanaka.net/excel/vba/tips/tips89.htm 参考。 >input text命令にオプションはあるのでしょうか? 「1行」を読み込む機能か確認。 LINE INPUTでもダメだったか。 >■r がバイナリでいうとどんな値か。一定値か。 3バイト+"■r"+3バイトと決まった位置に挿入されるかは わかりませんが、そうなるなら規則的なので、 今の状態から「123■r456」を合成すれば、まだ対処可能です。 質問のための事例、と思われるので、これは規則性があれば、に限られます。 改行コードが1バイト「0D0F」になるので、 1バイトずつ読み込む仕組みに変える。 それで、『「0D0F」になるまでが1行』と解釈すれば対処は可能です。

zibika
質問者

お礼

親身に回答していただきありがとうございます。 とても参考になりました。 今回は「LINE INPUT」でもうまくいきませんでした。 また、規則性のないデータを使用しております。 説明不足で申し訳ありません。。。 すごくわかりやすい説明でとても感激しました。 本当にありがとうございました。

関連するQ&A

  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • テキストファイルの入力について教えてください。

    可変長レコードのテキストファイルを1レコードずつ読み込んで処理をしたいと思っています。 改行コードで区切られているので、line inputで読み込もうとしていますがうまくいきません。 テスト用に入力ファイルを小さくするとうまくいくのですが、目的のファイル(180MB)を読み込もうとするとフリーズしたような状態になってしまいます。 どうすればよいかお知恵を拝借できないでしょうか。 EXCEL2003 VBAです。 よろしくお願いいたします。

  • VBAでテキストファイルの件数を調べる方法

    Access2000のVBAで関数を使用して ファイルのパス名、ファイル名を指定すれば、 テキストファイルの件数を検索し変数に返す 関数はありませんか?     通常テキストファイルを開き1件1件カウントを 取っていけば件数を知ることは可能ですが、 数千レコードのテキストファイルが複数個存在 する場合処理スピードが遅くなるため何か 最適な関数はありませんか? よろしくお願い致します。

  • EXCEL VBAで制御できるアップロート゜ツールは?

    FFFTPを使用してファイルの転送をしていますが、 これをEXCEL VBAで制御しようとしたのですが FFFTPは自動化に向かないらしく、制御できません。 EXCEL VBA で制御できるフリーソフトは無いでしょうか。使用OSはWIN95です。

  • (VBS) テキストファイル読込での改行コード

    VBAからVBスクリプトへの移植作業をしています。 テキストファイル中に改行コード \r\n と \n が混在しているのですが、 \r\n までを1行として取得したいです。 VBAだと Line Input で取得できたのですが、 VBScriptの場合、FileSystemObject.OpenTextFileで開き .ReadLine で読み込むことになりますが、 ReadLineは \n も行の終端とされてしまい、本来1行のデータが複数行に分かれて読み込まれてしまいます。 .ReadAllで一旦すべてを取得してから Split("\r\n") で分割するという方法は ファイルサイズが膨大だと負荷が掛かるので避けたいです。 \n は、これはこれでデータとして必要なので、削除することはできません。 負荷が掛からず、良い方法があればご教授頂きたく思います。 よろしくお願い致します。

  • VBAで、テキストファイルの削除はどうするのでしょうか。

    VBA で、あるディレクトリにあらかじめ作成、保存してあるテキストファイルを、Input Box からそのファイル名を指定してExcel に読込み、所定の処理をした後、元のテキストファイルをディレクトリ上から削除するにはどうしたらよいでしょうか。 いつも決まった名前のファイルを削除するのは Kill コマンドで容易にできたのですが、InputBox から入力した任意の名前のファイルを削除する方法を教えていただけませんか。

  • vbaでテキストファイル(*.txt)を取込みたい

    vba初心者です。 Application.Dialogs(xlDialogOpen).Showで選択したテキストファイル(***.txt)をテキストファイルウィザードで、タブ、カンマ、スペース区切りで、エクセルファイルに取り込むマクロを組みたいのですが? 何度やってもうまくいきません。 ご教示願えないでしょうか! excel2002を使用してます。 よろしくお願いします。

  • VBAでテキストファイルのデータを1つずつ読みたい

    VBでなくVBAなのですが、以下のようなテキストファイルの1,2行目は行単位で、4行目以降は1データずつ読みたいのですが、自分の知識では'Line'を使用しての行単位での読み込みしかできません。方法があれば教えて頂きたく存じます。 DATE 03/03/21 TIME 09:44:21 (空行) 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 ・ ・ ・ このような感じです。よろしくお願い致します。あと、VBAのファイル操作の詳しい解説書なども教えて頂けるとなお助かります。

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

    プログラムの初心者です。 困ってます。お教え下さい。 VBA上の制御で、あるテキストファイルのデータをコピーして、 別のテキストファイルに貼り付けして、別保存したいのですが、 分かりません。 テキストファイルを開くだけでしたらできたのですが、 それからが・・・・ Call Shell("C:\WINNT\system32\notepad.exe c:\text1.txt") すいません、お教え下さい。

  • エクセルにてテキストファイル読み込みでエラー  

    いつもお世話になっております。 テキストファイル (test.txt)をエクセルマクロにてセルへの読み込みを したいのですが、なぜか エラーになります。 Cells(n, 1) = buf  でエラーのようです。 理由がわかりません。 教えてもらえないでしょうか 普通の文章なら読み込みできるのですが =  を使っているとエラーがでるようです。 test.txtの画像を添付します。 エクセルのマクロの内容は次の通り Sub テキストファイルをセルに転記() Dim buf As String, n As Long Open "C:\Users\a\Desktop\test.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf n = n + 1 Cells(n, 1) = buf Loop Close #1 End Sub

専門家に質問してみよう