
No.4ベストアンサー
- 回答日時:
#2です。
>ファイル数の合計で結構です。ちょっと甘えていますが、先ほどのご回答のどこを改造すればよいのかがわかりません
Private Sub test02()
Dim fn As String
Dim hn As String
p01:
fn = InputBox("フォルダ名=", "フォルダ指定", "c:\My Documents\")
i = 1
sdirname = Dir(fn)
Do While sdirname <> ""
i = i + 1
'------
sdirname = Dir
Loop
MsgBox i & " 個のファイルあり"
End Sub
でやって見てください。
ファイル数やレコード数が取得できる、VBのプロパテイかメソッドがない場合は自分でそれらの数を算出し、変数にセットしないとなりません。プログレスバーを使うルーチンに入る前に。
これも1ファイルや1レコード当たりの処理時間が等しいと(違いは無視できると)言う前提で、全体300のうち60番目の処理をしている時は20%進行済みと表示すると言うことだと思います。
No.3
- 回答日時:
>ProgressBarを用いる場合、全体の処理数を求めますが、>Do Loopを用いる場合、For文と異なり必ずしもすぐに
>全処理数が分かるわけではありません。そのような場合、
>どのように全処理数を求めればよいですか?
通常は、件数がわからないものにプログレスバーは使いません。というか、使えません。
なので、事前に処理件数が大雑把でもわかる必要があります。
もちろん、さまざまな処理に対して全処理数を求める汎用的な方法はありません。
>私は、あるフォルダにあるファイルすべてを処理する
>プログラムを作りました。Do Loopで全てのファイルを
>参照し終わるまでをUntilの条件としています。
>したがって、いくつのファイルがあるかは分かりません。
で、件数を取得する方法ですが、やっぱりDirで取ってくるしかないのでは?
件数を取得するだけの処理を作るのもなんだかと思いますが、プログレスバーを使いたいのでしたらしょうがないと思ってください。
No.2
- 回答日時:
#1です。
あるフォルダの中のファイル数は#1を少し改造すると出ますのでそれの参考に上げたまでです。
>あくまでProgressBar表示のための全処理数を知りたいのですが
ProgressBarは汎用的なものです。例えば処理時間の経過を表す場合は、処理完了予定時間の合計は判らないことが多いと思います。だから何をもって、処理時間に関係付けるかではないのでしょうか。この質問では何を知りたいのでしょうか。推定するに、例えばファイル数でなければ、フォルダ内の通しのレコード数合計ですか。
これももし見当違いの場合はお許し下さい。
この回答への補足
有難う御座います。まだ不慣れでうまくお伝えすることができず申し訳御座いません。
ファイル数の合計で結構です。ちょっと甘えていますが、先ほどのご回答のどこを改造すればよいのかがわかりません。Do Loopでご説明通りDir関数を用いてみつけたファイルを全て処理するプログラムを作りました。私なりに考えるのは、Do Loop内で何回の処理が行われたかをカウントすることでのみ、その処理数、つまりファイル総数が求められるということで、ProgressBar作成のためDo loop以前に処理数を知ることはできないのではと考えます。やはり、はじめにDir関数を使いファイルの総数を数えるためのコードが新たに必要なのでしょうか?
No.1
- 回答日時:
他の質問の回答に使ったものですが(但しエクセルVBA)
Private Sub test01()
Dim fn As String
Dim hn As String
p01:
fn = InputBox("フォルダ名=", "フォルダ指定", "c:\My Documents\")
If fn = "end" Then Exit Sub
' fn = "c:\My Documents\"
i = 2
sdirname = Dir(fn)
Do While sdirname <> ""
If Right(sdirname, 4) = ".csv" Then
Cells(i, 1) = sdirname
hn = fn & sdirname
Cells(i, 2) = hn
i = i + 1
End If
'------
sdirname = Dir
Loop
GoTo p01
End Sub
の「Do While sdirname <> ""」の部分が参考になりませんか。
もし見当違いの場合はお許し下さい。
この回答への補足
有難う御座います。しかし、あくまでProgressBar表示のための全処理数を知りたいのですが。もし、お分かりになれば宜しくお願い致します。
補足日時:2004/04/15 23:26お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private subモジュールを他のモ...
-
StatusStripの表示が更新されな...
-
【C#/Java?】try-catchでcatch...
-
どうやってもFor文を抜けてしま...
-
マクロで、次のコードへ行く前...
-
vbaのエラー対応(実行時エラー...
-
【C#】Page_Loadさせない方法に...
-
Excel VBA セルの名前があるか...
-
タイマーの使い方
-
バッチファイルでのエラー処理...
-
VB.NET SPRED(チェックボック...
-
ExcelのVBAで、選択したファイ...
-
IF文に時間(何時から何時ま...
-
Access プログレスバー 画面...
-
エクセル VBAで複数セル選択時...
-
IEで不正な処理で強制終了・...
-
以下マクロの処理を最終行まで...
-
【Vb.net】プリンタジョブの取得
-
アクセスからエクセルファイル...
-
ドリブン??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
シグナル 6(SIGABRT)とは?
-
vbaのエラー対応(実行時エラー...
-
特定の名前のオートシェイプの...
-
IF文に時間(何時から何時ま...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
【C#】Page_Loadさせない方法に...
-
StatusStripの表示が更新されな...
-
【Vb.net】プリンタジョブの取得
-
シェルスクリプトでファイル内...
-
マクロで、次のコードへ行く前...
-
途中で処理を中断させたい (ア...
-
Word VBA。各マクロの間に待ち...
-
Functionで戻り値を複数返す方法
-
特定のファイルを他のプロセス...
-
【VBA】エラー処理で別プロシー...
-
ExcelのVBAで、選択したファイ...
-
VB6にてネットワーク上にある共...
おすすめ情報