• ベストアンサー

VBAでテキストファイルを最後まで読み込みたい

テキストファイル内の文章を最後まで読み込みたいのですが、 do  Line Input #1, gyou  処理1 while 条件 で、条件はどのような記述にすればいいのですか? テキストファイルには、改行コードのみの行や、スペースのみの行が混在しています。 また、行数も常に変動するので、 for~nextで予め回数を指定することも出来ません。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

関連するQ&A

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

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

  • VBAで外部ファイル(HTMLソース)を読み込んで書き込む時の問題

    下記のように外部ファイルを読み込んで、編集してまた別ファイルに書き込むという作業を行っております。 ************* ファイルオブジェクト略 ************* 1:Open "test.html" For Input Shared As #1 'テキストファイルを開く 2:Do While Not EOF(1) 'ファイルの終端まで繰り返す 3:Line Input #1, strBuf 'テキストファイルより1行を読み込む 4:tf.write strBuf '読み込んだ1行のデータ行を追加する 5:Loop 6:Close #1 'テキストファイルを閉じる 4行目で実際読み込んだデータを書き込んでいるのですが、 書き込んだ後のHTMLファイルソースをみると改行されずに データが入っています。 <例> <HTML><HEAD><TITLE>***</TITLE></HEAD><BODY> "\n"的な改行コードをいれるにはどうすればよろしいでしょうか? よろしくお願いいたします。

  • VBAでテキストファイルの改行を無視する方法

    VBAでテキストファイルにある文字列を配列の変数に格納したいのですが、改行が含まれているとそこから2バイトずつずれてしまいます。 1行毎に読もうとしても1行の文字列が6000バイトぐらいあるので変数に格納しきれません。 読み込むテキストファイルは _________0_________1_________2・・・・________10 _______100________51 のようになっており、10バイトずつ変数に格納していきたいです(スペースも格納する必要あり) 以下のように作ったのですが、改行のあるところからずれてしまいます。 Sub ファイル読み込み() Dim buf(30000000) As String Dim i As Long i = 0 With CreateObject("Scripting.FileSystemObject") With .OpenTextFile("C:\test.text", 1) Do While .AtEndOfStream <> True buf(i) = .read(10) Loop End With End With End Sub 「次の文字列が改行コードである」ということが分かれば.skipで飛ばせるのですが、その判定式が探しても見つかりません。 どなたかご教授よろしくお願いします。

  • VBA-読み込んだテキストファイルを並び替えて書き出したい

    VBA-読み込んだテキストファイルを並び替えて書き出したい ch1=FreeFile Open A for Input as ch1 ch2=FreeFile Open B for Input as ch2 DO while Not EOF(ch1) Line Input #ch1,buf Print #ch2,buf Loop Close #ch1,#ch2 で読み込み、書き出すことはできました。 やりたいことは、書き出す時に、項目を並べ替えたいのです。 例 にんじん りんご ねこ だいこん バナナ いぬ ↓ りんご ねこ にんじん バナナ いぬ だいこん よろしくお願いいたします。 区切りはタブです。

  • テキストファイルを二次元配列に

    お世話になります。 テキストファイルを1行ずつ読み込んで二次元配列に格納するプログラムですが、 //最大行数 #define LINE_MAX 10 //行内最大文字数 #define INPUT_MAX 128 char str[LINE_MAX][INPUT_MAX]; というようにして実現しています。 これを行数が分からないテキストファイルでも大丈夫なようメモリを動的に確保したいと考えています。 二つの次元の内、一つを動的に確保するにはどのようにしたら良いでしょうか。

  • テキストファイル内の「誤改行」を修文したい!

    perl は初心者です。よろしくお願いします。 ★無名ハッシュを作り、リファレンスをハッシュに格納する方法を採用して、試行錯誤しています。 ファイル内容は、論理行の一行毎に行頭が ”AA” のように””で囲まれています。(例文後述) しかし、行の中には「誤改行」されて正常な行が分割されていて、改行され行頭が””で囲まれていない行が存在します。(正常な行が2分割され、前半部分と後半部分が別な行文となっている) この「誤改行」を、直前にある「元の正常な分割された前半の行文」と連結して、新たな正常な行としてファイルを修正し新規テキストファイルに書きこみたい。この際、分割されていた2個の「行文」は不要になったので、新規テキストファイルには書き込まない。 この修文作業が、途中まで出来ましたが最後の不要な行の削除が出来ないので、困っています。 ------------------------------------------------------------ 対象とするテキスト内容 (下記の行番号と文字列は例示です) 1. "ABCD",あいうえおかきくけこ123456789 XXXXXXXXXXXX 2. "EFGH", 3. さしすせそたちつてと9876543 XXXXXXXXXXXX # ←「誤改行」の行です。 4. "IGKL",なにぬねのはひふへほ123456789 XXXXXXXXXXX 5. "MNOP",まみむめもやいゆえよ987654321 XXXXXXXXXXX 6. "QRST", 7. らりるれろわいうえを123456789 XXXXXXXXX # ←「誤改行」の行です。 8. 9. ------------------------------------------------------------------ 期待する修文の出力結果 (行内容は、元の行番号の順番と違っても結構です) 1. "ABCD",あいうえおかきくけこ123456789 XXXXXXXXXXXX 2. "EFGH",さしすせそたちつてと9876543 XXXXXXXXXXXX 3. "IGKL",なにぬねのはひふへほ123456789 XXXXXXXXXXX 4. "MNOP",まみむめもやいゆえよ987654321 XXXXXXXXXXX 5. "QRST",らりるれろわいうえを123456789 XXXXXXXXX 6. 7. ----------------------------------------- 私作成したスクリプトの要約は、 # 対象ファイルを一行づつ読み込む. # 末尾の改行を削除 # 誤改行の場合を正規表現で探す。$ng_gyou に格納 # その他正常行は$ok_gyou, に格納する。 # $falag に誤改行の場合は0、正常な改行の場合は1を格納 # 誤改行の場合の行番号を$count_ng に、正常な改行の場合の行番号を$count_ok に、全部の行番号は$flag_1に格納する。 # 無名ハッシュを作り,リファレンスを $ref に格納する $ref = {'nomber' => $flag_1, 'ng' => $ng_gyou, 'ok' => $ok_gyou, 'ngcount' => $count_ng, 'okcount' => $count_ok, 'flag' => $flag_ok }; $WORD{$flag_1} = $ref; # nomber:$flag_1をキーにして,リファレンスをハッシュ:%WORDに格納 # このハッシュ「%WORDを」 読み込んで、処理しました。 foreach $flag_1 ( sort { $a <=> $b } keys %WORD) {    if($one->{ok} == 0) { ・・・・・・・・・・・・・・・・・ # 細部は、長くなるので省略します。( 誤改行の連結までは成功しましたが、・・・・・・??) 以上、質問内容が冗長になりましたが、どうか御教示下さい。

    • ベストアンサー
    • Perl
  • テキストファイルの閉じ方について

    いつもお世話になります。 環境はXPを使用しています。 VBAでセルに設定してあるハイパーリンクを開くと テキストファイルが開くようにしてあります。 このテキストファイルを閉じようとするのですが、 閉じません。 ちなみにソースは以下の通りです。 intFileNum = FreeFile Open strFileName For Input As intFileNum i = 1 Do While Not EOF(intFileNum) Input #intFileNum, TextLine Cells(i, 1) = TextLine i = i + 1 Loop Close #intFileNum 最後のCloseで閉じないのはなぜですか? 初めてテキストファイルを操作するのでよくわかりません。 よろしくお願いします。

  • VBAでテキストファイルの読み書き

    ExcelVBAで、テキストファイルの読み込みと書き換えについて教えてください。 現在は「LINE Input」で一行を読み込み、MIDで文字列を読み込んだり、書き換えていました。 が・・・それは「1文字目から5文字目まで」と決まった位置で書いてあるというのが大前提です。 でも、いつもそうとは決まっていません。当然いろいろな形があるわけです。 500▲▲6.54▲99999▲▲▲▲DDD▲▲ 3000▲40▲▲▲▲PPP▲60.45▲▲ AAA▲CCC▲80.45▲666▲777▲ (見にくいのですが▲はスペースです)などかなり不規則に並んでいる物があります。 「1行目の3番目の数値」(この場合だと99999)をうまく取り出すにはどうしたら良いのでしょうか? 当然その前の500と6.54はどんな数値になっているかわかりませんし、スペースの数も不規則です。 取り出す値の桁数だって決まっている訳じゃありません。 この場合は▲をスペースとしていますが、当然タブで区切られていることも予想できます。 かなりいい加減なデータテキストファイルなのですが、決まっているのは「1行目の3番目の数値」ということだけなのです。 一文字一文字、スペースかタブか文字か?と認識する必要があるのはわかるのですが、切り貼りがうまくできないのです。 文字とスペース(もしくはタブ)を認識してそれを変数に取っておいて、文字をくっつけたりするのでしょうが・・・なかなかうまくいきません。 変数とかもいろいろ用意しているのに・・・根本ができていないようです。 何かわかりやすくて、いい方法を教えていただけないでしょうか?昨日はずっとこれをしていたのですが、目当ての物を取り出せずにいました。どうかお力をお貸しください。よろしくお願いします。

  • c# テキストファイル操作について

    C#でテキストファイルを読み込み、そのテキストファイルの行数を数えるようにしたいのですが・・・。 テキストファイルを読み込むことができたんですが、行を数えることができません。どなたか、教えていただけませんか?よろしくお願いします。

  • VB6.0 でのテキストファイルの表示

    .net では、readstream でがばっととって、テキストボックス(読み取り専用)に表示しました。 これと同様のことをVB6.0でチャレンジしたのですが、テキストボックスに表示されるのは最初の一行だけでした。マルチラインのテキストボックス設置後 Private sub command1_click() Dim data as string Open "ファイルパス" for input as #256 Do while EOF(256) line input #256, data loop text1.text=data としたところ、ファイル内の最初の一行目に位置する「%」のみが表示されました。 readonlyもつかえないみたいなので、Listを使うのがよいのでしょうか?ご教示下さい

専門家に質問してみよう