Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6356 / 13644 ツリー ←次へ | 前へ→

【45612】Do Until で2回 Chara 07/1/6(土) 22:01 質問[未読]
【45613】Re:Do Until で2回 かみちゃん 07/1/6(土) 22:08 発言[未読]
【45615】Re:Do Until で2回 Kein 07/1/6(土) 23:53 発言[未読]
【45690】Re:Do Until で2回 SoundPower 07/1/10(水) 22:35 お礼[未読]
【45656】Re:Do Until で2回 Jaka 07/1/9(火) 10:29 発言[未読]

【45612】Do Until で2回
質問  Chara  - 07/1/6(土) 22:01 -

引用なし
パスワード
      Do Until EOF()
     Line Input #, buf
   Loop
   Close

という構文があるかと思うのですが、ダイアログで選択したTXTファイルに対して2回Loopさせるにはどうしたらよいのでしょうか?
下の様な感じで処理を行いたいのです。
現状は、1回選択したあと、また同じファイルを選択していて2度手間なのです。
よろしくお願いします。

   Do Until EOF(あるファイル)
     Line Input #あるファイル, buf
     Sheet「ファイル名処理1」に処理1の結果
   Loop
     Line Input #あるファイル, buf
     Sheet「ファイル名処理2」に処理2の結果
   Loop
   Close

【45613】Re:Do Until で2回
発言  かみちゃん  - 07/1/6(土) 22:08 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> ダイアログで選択したTXTファイルに対して2回Loopさせる

何がしたいのかよくわかりません。
>     Sheet「ファイル名処理1」に処理1の結果
>     Sheet「ファイル名処理2」に処理2の結果
この部分をもう少し詳しく説明していただければ、もしかしたら、2回Loopは
必要ないかもしれませんよ。

【45615】Re:Do Until で2回
発言  Kein  - 07/1/6(土) 23:53 -

引用なし
パスワード
   EOF関数が True を返すまでループする。というコードは、
開いたテキストのファイルポインタがファイルの末尾にあるかどうか ?
を調べて、全てのデータを漏れなく読み込む目的で作るわけですから、
先頭から任意の行数だけ読みたい場合は、EOF関数を使わずFor 〜 Next 構文に
変更してしまう方が適当です。ま、2行だけ読みたいという事ならループ自体が
必要ないでしょう。単純に

Line Input #1, buf
Sheets("ファイル名処理1").Range("A1").Value = buf
Line Input #1, buf
Sheets("ファイル名処理2").Range("A1").Value = buf
Close #1

などと並べて書けばいいのです。
(私も質問の意味が正確にわからないので、見当違いのレスならご容赦下さい。)

【45656】Re:Do Until で2回
発言  Jaka  - 07/1/9(火) 10:29 -

引用なし
パスワード
   素直に2回やれば良いんじゃないですか。

>   Do Until EOF(あるファイル)
>     Line Input #あるファイル, buf
>     Sheet「ファイル名処理1」に処理1の結果
>   Loop
>   Close
>   Do Until EOF(あるファイル)
>     Line Input #あるファイル, buf
>     Sheet「ファイル名処理2」に処理2の結果
>   Loop
>   Close

もしくは、
>   Do Until EOF(あるファイル)
>     Line Input #あるファイル, buf
>     Sheet「ファイル名処理1」に処理1の結果
>     Sheet「ファイル名処理2」に処理2の結果
>   Loop
>   Close

【45690】Re:Do Until で2回
お礼  SoundPower  - 07/1/10(水) 22:35 -

引用なし
パスワード
   Keinさま、みなさま返事が遅くなりまして申し訳ありません。
明日、会社にてさっそく試してみます。
データの中身に規則性のある部分とない部分がありまして、1回目で
規則性のある部分をとりだし、2回目で不規則な部分を取り出して加工後
1回目とあわせる、的な目論見だったのですが、この考え自体が間違って
いたようです。
無意味な質問でしたのでこれにて閉じます。

(しかし、下記の発想は私にはなかったので検討させてください。)
>Line Input #1, buf
>Sheets("ファイル名処理1").Range("A1").Value = buf
>Line Input #1, buf
>Sheets("ファイル名処理2").Range("A1").Value = buf
>Close #1
>
>などと並べて書けばいいのです。
>(私も質問の意味が正確にわからないので、見当違いのレスならご容赦下さい。)

6356 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free