[[20170129045053]] 『ファイル削除(kill)の使い方について』(あん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル削除(kill)の使い方について』(あん)

夜中にすいません。

VBAで質問があります。

途中からとなりますが・・・
strfilename1 = Dir("C:\test\予定データ\*.csv")

    Do While strfilename1 <> ""
      strfilename1 = Dir()  ←最終ファイルが見れてるかであえて入れてます。
      Kill strfilename1

    Loop

の構文ですが、実行時エラー'53'「ファイルが見つかりません」と
表示されます。

ただ、strfilename1ではちゃんとcsvファイルを認識しています。
なぜでしょうか??

やりたいことはtest\予定データフォルダ配下にあるcsvファイルを
いったん削除するということです。
※フォルダ内にcsvファイルがなければループを抜ける

なんやと思われるかもしれませんが、悩んでいます。

どうかよろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 Kill フォルダパス文字列も含んだファイルのフルパス  です。
 strfilename1 は abc.csv とか xyz.csv といった 単なるファイル名ですので。

 VBA でファイル処理時 パス文字列を省略すると、カレントディレクトリィとして扱われます。

 ところで ループ内の DIR() と Kill の順番が逆です。

 >>最終ファイルが見れてるかであえて入れてます。

 このコメントの意味が全くわかりませんけど、現在の順序では

 ・最初のファイルは消されず残る
 ・フォルダにこれ以上ファイルがなくなった時点で、エラーになる

 といった不具合が出ますよ。

(β) 2017/01/29(日) 07:16


β様

 ご回答、ありがとうございます。
すいません、根本的に私が分かっていないのですが、

strfilename1 = Dir("C:\test\予定データ\*.csv")

    Do While strfilename1 <> ""
      Kill strfilename1

    Loop

とすると、csvファイルが消されます。ここまでは大丈夫です。

しかし、その後で「Do While strfilename1 <> ""」の中の
「Kill strfilename1」でエラーとなります。

1.strfilename1内は最初にcsvファイルが消されます。
2.フォルダ内が空のため、ループから外れるのでは?
と思ったのですが、勘違いしているということでしょうか?

(あん) 2017/02/02(木) 12:55


Killした後、本来なら次のファイル名を得て、それをまたKillしなければなりません。
しかし、それがないので、ループしても同じファイル名を消そうとして、それはもう無いので、エラー停止するのですね。ファイルが無ければ抜けるのではなく、変数が空ならば抜けるというコードになってます。
もし止まらなかったら、無限ループして、ハングアップしてしまうところですよ? 危ない危ない。

Kill後に、strfilename1 = Dir と、1行追加してみてください。(条件を省略すると、次のファイル名が得られます)
(???) 2017/02/02(木) 13:43


 ??? さんからもコメントがありますが、Kill後、次のファイルを取得してからLoopしなければきけません。

 そもそも

 >>ところで ループ内の DIR() と Kill の順番が逆です。

 とコメントしているのに、改訂版としてアップされたコードは、順番を逆にしたものではなく
 Dir をなくしたものですね?

 なぜ、アドバイスしたことを無視されたのかなぁ・・?

 それと

 >>とすると、csvファイルが消されます。ここまでは大丈夫です。 

 大丈夫じゃないです。『たまたま』です。
 ファイルを指定しようとすると、どのフォルダのどのファイルか、きちんと Windows に知らせてやる必要があります。
 なので【必ず】フォルダパス文字列を含んだファイルのフルパス文字列にしてください。

 フォルダパス文字列なしでOKなのは、たまたま カレントディレクトリが、当該フォルダになっているからだけのことです。

 繰り返します。大丈夫ではありません。

(β) 2017/02/02(木) 19:49


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.