[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ファイル削除(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後に、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.