dポイントプレゼントキャンペーン実施中!

excel vbaの初心者です
現在、フォルダ内にあるファイルの数をカウントするために、dir関数を使用してプログラミングしています。
このプログラムで問題が発生していて困っています
1.マクロを起動して、指定したフォルダ内のファイル数をカウントする
2.フォルダ内のファイルを増減させる
3.再度、マクロを実行してもファイル数は1.で起動したときのファイル数のままで、2.で変更した後のファイル数になりません。
このため、マクロを再実行しても正しいファイル数が取得できずに困っています。
もしかすると、マクロ実行前にメモリのガーベージコレクションみたいなことをしないといけないのかもしれないのですが、なんせvbaは初心者のためどうすればいいのか途方にくれています。

業務で使いたいのですが、小さい会社で周りには聞くことのできる人もいないので、どなたかご回答をよろしくお願いいたします。

A 回答 (2件)

下記で問題なく動作しますよ?


1.マクロの入ったExcelを起動し、マクロでファイル数確認
2.Excelを閉じずに対象フォルダにファイルを追加
3.再度マクロを実行しファイル数を確認 → 結果は変わっている。
-------
Sub test()
Dim cnt As Long: cnt = 0
Dim file As String

file = Dir("C:\foo\*")
Do While file <> ""
cnt = cnt + 1
file = Dir()
Loop
MsgBox cnt
End Sub
    • good
    • 0
この回答へのお礼

本日、会社で再確認した結果何の問題もなく正常に動作しました。
やったこと
1.教えていただいたプログラムをフォルダ名のみ変更し、マクロが正常に動作することを確認(ファイル数の増減を2~3回変更しました)
2.自分で書いたプログラムに組み込んで、マクロが正常に動作すること確認
3.オリジナルのプログラムでマクロが正常に動作することを確認(ここは念のため5~6回は確認しました)
4.また、他機能を確認中も常にmsgboxでファイル数を表示させ、問題ないことを確認

原因は、不明ですが問題なく動いたので上長に作業完了を報告しました。
アドバイスをくださった皆様大変お世話になりました。ありがとうございます。

お礼日時:2016/04/07 20:32

プログラムのバグじゃないでしょうか。


とりあえず、次のことを確認して、それでも問題が見つからないようであれば、補足にプログラムコードを挙げて頂ければ、誰かが突っ込んでくれると思います。

違うフォルダ内のファイル数をカウントしていないか?
*.txtだけをカウントしているのに、増減させたファイルが、.xlsxだったりしないか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!