Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4796 / 13644 ツリー ←次へ | 前へ→

【54393】WScriptが終了しない りった 08/3/11(火) 15:05 質問[未読]
【54397】Re:WScriptが終了しない n 08/3/11(火) 17:10 発言[未読]
【54400】Re:WScriptが終了しない りった 08/3/11(火) 18:07 お礼[未読]

【54393】WScriptが終了しない
質問  りった  - 08/3/11(火) 15:05 -

引用なし
パスワード
   特定フォルダ下のファイル一覧を取得するため、後述のコードを実行しました。
フォルダの中にたくさんファイルが有ると(※)、WSH.Execが終わりません。
終わらない理由、回避策等ご存知の方がいらっしゃいましたら
ご教示お願いします。

※環境依存するかも知れませんが、私のPCでは下記で再現。
sample.xls (257KB)
コピー 〜 sample.xls
コピー (2) 〜 sample.xls
コピー (3) 〜 sample.xls
:   :    :
コピー (84) 〜 sample.xls

Sub Sample1()
  Dim WSH, wExec, sCmd As String, Result As String, tmp, i As Long
  
  Cells.Clear
  Set WSH = CreateObject("WScript.Shell")
  sCmd = "dir ""D:\Program Files\test\"" /S/B"
  Set wExec = WSH.Exec("%ComSpec% /c " & sCmd)
  Do While wExec.Status = 0
    DoEvents
  Loop
  Result = wExec.StdOut.ReadAll
  tmp = Split(Result, vbCrLf)
  For i = 0 To UBound(tmp)
    Cells(i + 1, 1) = tmp(i)
  Next i
  Set wExec = Nothing
  Set WSH = Nothing
End Sub

Office TANAKA様のコードを一部変更して使用させて頂いています。

【54397】Re:WScriptが終了しない
発言  n  - 08/3/11(火) 17:10 -

引用なし
パスワード
   こんにちは。
>Do While wExec.Status = 0
>  DoEvents
>Loop
これ不要ではないですか?
//www.roy.hi-ho.ne.jp/mutaguchi/bbs/list104.shtml
『ばんのしゃーによかばんた さん 2004年 05月 02日 19時 28分 47秒 』
...を参照してみてください。

//www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_03.html
ここには
『起動プログラムからの標準出力を処理する場合には、
StdOutストリームの終端までを処理すれば、
Statusプロパティを意識することなく、
実行が終了するまでの結果を読み込むことができる』
...とあります。

【54400】Re:WScriptが終了しない
お礼  りった  - 08/3/11(火) 18:07 -

引用なし
パスワード
   回答ありがとう御座います。
ご指摘の修正で動きました。
サイトも勉強になりました。

4796 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free