プロが教える店舗&オフィスのセキュリティ対策術

初めまして、ynakaといいます。

VBAを使用して、MS-DOSを立ち上げ、ファイルを実行させようと
考えています。
Shellを使用して、MS-DOSを立ち上げるまではできたのですが、
その後、どうすればよいか迷ってます。
MS-DOS上のみでしか使用できないソフトを実行させたいので、
どうしてもMS=DOS上でなくては実行できません。

どなたかお教え下さい。

A 回答 (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
がちゃんと動くか確認しましょう。
    • good
    • 0
この回答へのお礼

いろいろとありがといございました。
これで1,2週間悩んでいた問題が解決できました。
(すいません、初心者なもんで。。。)
本当にありがとうございます。

お礼日時:2001/03/14 22:56

今回の質問の本質とは関係ないのですが一応ご説明しておきましょう。


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」を
選びたいのですが上記ではできませんでした。
何故でしょう?

補足日時:2001/03/13 23:06
    • good
    • 0

ドライブやディレクトリを移動しなければならないのは仕方ありません。


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 …
http://support.microsoft.com/support/kb/articles …

この回答への補足

command.comの後の「 /c attrib -h -s myfile.txt」は
何を現しているのですか?
特に ”/c attrib -h -s”の部分が分かりません。
お教え下さい。

補足日時:2001/03/12 18:23
    • good
    • 0

Shell関数ででコマンドインタプリタ(commandだかcmdだか)を起動してるんだと予測します。


だったら、

Shell("command /c hoge.exe param1 param2")

という感じでいきましょう。

この回答への補足

ご指摘の通り、"COMMAND.COM"を起動させてます。
しかし、この場合、どのドライブから始まるかわからないので
起動させたいファイルがあるドライバに移動させてやる必要が
あります。
また、助言の通りやりますと「パラメータが多すぎます」とでます。
どういう意味か分かりません・・・・

補足日時:2001/03/09 19:50
    • good
    • 0

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