- PR -

VBSであるフォルダの以下特定のファイルを全て参照する方法

投稿者投稿内容
ポン
ベテラン
会議室デビュー日: 2006/02/15
投稿数: 98
投稿日時: 2006-11-09 17:42
じゃんぬねっとさんご回答ありがとうございます。

Blueさんとじゃんぬねっとさんのソ−スをコピーし今見ている最中です。

なるほど・・・の一言につきませんが

ソースを見て自分の糧にしたいと思います。ありがとうございました。
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2006-11-09 19:48
ファイルやフォルダの処理に限りませんが、
For Eachのループ処理の中で、そのループ変数に相当する
Item(オブジェクト)をDeleteしてはだめです。

For Each oItem In vSomeThing
oItem.Delete
Next
みたいな処理は×です。

削除したい場合は、いったん何らかの手がかり(ファイルやフォルダならパスですね)を
Dictionaryオブジェクトや配列に記憶させて、
削除は別途行う必要があります。

For Eachではなく For i = 1 To x のタイプでアクセスできる
コレクション系であれば
cnt = oCollection.Count
For i = cnt To 1 Step -1
oCollection.Item(i).Delete
Next
みたいなコードは通ります。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-11-09 20:47
引用:

platiniさんの書き込み (2006-11-09 19:48) より:
ファイルやフォルダの処理に限りませんが、
For Eachのループ処理の中で、そのループ変数に相当する
Item(オブジェクト)をDeleteしてはだめです。

For Each oItem In vSomeThing
oItem.Delete
Next
みたいな処理は×です。

あれダメなんですか?

ならば、
コード:
For Each objFile In objFolder.Files
    objFSO.DeleteFile objFile.Path
Next


はOKになるのでしょうか?
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-11-09 22:22
引用:
ファイルやフォルダの処理に限りませんが、
For Eachのループ処理の中で、そのループ変数に相当する
Item(オブジェクト)をDeleteしてはだめです。



一般的には、NG ですが、こと FSO に限っては問題ありません。
_NewEnum を呼び出すときに、再計算しているかと。

スキルアップ/キャリアアップ(JOB@IT)