- ベストアンサー
VBAを使用して、MS-DOSを起動し、ファイル起動。
初めまして、ynakaといいます。 VBAを使用して、MS-DOSを立ち上げ、ファイルを実行させようと 考えています。 Shellを使用して、MS-DOSを立ち上げるまではできたのですが、 その後、どうすればよいか迷ってます。 MS-DOS上のみでしか使用できないソフトを実行させたいので、 どうしてもMS=DOS上でなくては実行できません。 どなたかお教え下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
キーボードから入力する項目が決まっているのであれば、そのキー入力が入ったファイルを作っておいてリダイレクトします。 「上書きしますか[y/n]」が1回だけあるなら、「y」一文字+改行の入ったファイル(ここではy.txt)を作業ディレクトリに作っておき、 Shell("command.com /c myprog.exe arg1 < y.txt") というようにします。 まず、DOSプロンプト上で command.com /c myprog.exe arg1 < y.txt がちゃんと動くか確認しましょう。
その他の回答 (3)
- millionwalker
- ベストアンサー率46% (22/47)
今回の質問の本質とは関係ないのですが一応ご説明しておきましょう。 attribはファイル属性を変更する外部コマンド(=プログラム)です。 attrib -h -s myfile.txt で、myfile.txtというファイルの隠しファイル属性とシステム属性を外すことができます。今回のVBA関数の例としては何でもよかったので、これを使用しただけです。 さて、ここからは本筋。 command.com /c myprog でcommand.comを起動してさらにmyprogを実行できます。myprogというプログラムにコマンドラインパラメータが必要であれば、 command.com /c myprog myarg1 myarg2 のようにすればパラメータ付きで実行できます。
補足
DOS上で、 上書きしますか?[y/n]で自動的に「y」を 選びたいのですが上記ではできませんでした。 何故でしょう?
- millionwalker
- ベストアンサー率46% (22/47)
ドライブやディレクトリを移動しなければならないのは仕方ありません。 ExcelのVBEからこんな感じでうまく動きますけど。 Sub Hoge ChDrive ("c") ChDir ("c:\temp") Call Shell("command.com /c attrib -h -s myfile.txt") End Sub 「パラメータが多すぎます」というのはVBAのエラーなんでしょうか?それとも 呼び出しているコマンドのエラーなんでしょうか。 このShell呼び出しだと、コマンドプロンプト画面は出ても一瞬で消えてしまって DOS側でエラーが出てもわかりませんから、テスト中は Shell("command.com /k hoge param") の形でやるといいでしょう。 あと、サポート技術情報にこんな情報がありました。 この問題かもしれないのでちょっと見てみてください(ただし英文)。 http://support.microsoft.com/support/kb/articles/Q149/5/70.asp http://support.microsoft.com/support/kb/articles/Q213/8/00.asp
補足
command.comの後の「 /c attrib -h -s myfile.txt」は 何を現しているのですか? 特に ”/c attrib -h -s”の部分が分かりません。 お教え下さい。
- millionwalker
- ベストアンサー率46% (22/47)
Shell関数ででコマンドインタプリタ(commandだかcmdだか)を起動してるんだと予測します。 だったら、 Shell("command /c hoge.exe param1 param2") という感じでいきましょう。
補足
ご指摘の通り、"COMMAND.COM"を起動させてます。 しかし、この場合、どのドライブから始まるかわからないので 起動させたいファイルがあるドライバに移動させてやる必要が あります。 また、助言の通りやりますと「パラメータが多すぎます」とでます。 どういう意味か分かりません・・・・
お礼
いろいろとありがといございました。 これで1,2週間悩んでいた問題が解決できました。 (すいません、初心者なもんで。。。) 本当にありがとうございます。