エクセルVBAからDOSコマンドを実行するには?
未読分:3件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#3 2015年2月12日(木)09時47分 From: くわおとろ | 返事 削除 変更 |
回答ありがとうございます。 はい、cドライブです。 しかし、コマンドプロンプトからtreeコマンドで処理させると1分程度でcドライブのツリー情報を取得できていました。 ただし、エクセルVBAから処理を行うとなぜか20分以上かかってしまい、しかもプロンプト自体を終了させることができません。 これなら手動でプロンプト処理をした画面をコピペして張り付けたほうが早いのですが、どうにかVBAで処理できないか考えています。 |
Message#2 2015年2月12日(木)09時44分 From: WebVBA | 返事 削除 変更 |
これってcドライブのツリーデータ全て出力させるつもりですか? Dos_cmd = "tree c:\" かなり数があると思いますが・・・・ おそらく処理が完了していないのではなく処理中だと思います。 そのままほっとけば最後まで処理され表示してくれると思いますよ。 |
Message#1 2015年2月12日(木)09時06分 From: くわおとろ | 返事 削除 変更 |
エクセルVBAからDOSコマンドを実行するにはどうしたらいいでしょうか? エクセルVBAからDOSコマンド(tree)を実行してエクセルのセルにDOSコマンドで取得したツリーの一覧を取り込もうと考えています。 色々なサイトで同様の処理について書かれている処理を試してみたのですが、プロンプト画面は立ち上がったもののその後の処理がうまくいきません。 このプロンプト画面を閉じると一応実行結果がセルに取り込まれるのですが、このままでは途中の進捗状況が分かりません。 こちらをうまく回避できる方法がありましたら、教えてください。 一応以下が色々なサイトのやつから自分なりに構築したVBAコードとなります。 よろしくお願いいたします。 Sub sample() Dim tmp, i As Long Dim Pr_tree, Pr_Exec, Dos_cmd, Result As String Set Pr_tree = CreateObject("WScript.Shell") Dos_cmd = "tree c:\" Set Pr_Exec = Pr_tree.Exec("%ComSpec% /c " & Dos_cmd) Do While Pr_Exec.Status = 0 DoEvents Loop Result = Pr_Exec.StdOut.ReadAll tmp = Split(Result, vbCrLf) For i = 0 To UBound(tmp) Cells(i + 1, 1) = tmp(i) Next Set Pr_Exec = Nothing Set Pr_tree = Nothing MsgBox "ディレクトリ情報を取得しました。" End Sub |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降