• ベストアンサー

VBAを使用して、MS-DOSを起動し、ファイル起動。

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

  • ynaka
  • お礼率16% (3/18)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 がちゃんと動くか確認しましょう。

ynaka
質問者

お礼

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

その他の回答 (3)

回答No.3

今回の質問の本質とは関係ないのですが一応ご説明しておきましょう。 attribはファイル属性を変更する外部コマンド(=プログラム)です。 attrib -h -s myfile.txt で、myfile.txtというファイルの隠しファイル属性とシステム属性を外すことができます。今回のVBA関数の例としては何でもよかったので、これを使用しただけです。 さて、ここからは本筋。 command.com /c myprog でcommand.comを起動してさらにmyprogを実行できます。myprogというプログラムにコマンドラインパラメータが必要であれば、 command.com /c myprog myarg1 myarg2 のようにすればパラメータ付きで実行できます。

ynaka
質問者

補足

DOS上で、 上書きしますか?[y/n]で自動的に「y」を 選びたいのですが上記ではできませんでした。 何故でしょう?

回答No.2

ドライブやディレクトリを移動しなければならないのは仕方ありません。 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

ynaka
質問者

補足

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

回答No.1

Shell関数ででコマンドインタプリタ(commandだかcmdだか)を起動してるんだと予測します。 だったら、 Shell("command /c hoge.exe param1 param2") という感じでいきましょう。

ynaka
質問者

補足

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

関連するQ&A

  • MS-DOSが見つからない

    Javaをダウンロードしていざ使おうとしたら、MS-DOSの場所が見つかりません。windows2000を使用していて、本にはスタート→プログラム→アクセサリー→MSーDOSファイル(プロンプト)で出来ると書いてあったのですが、アクセサリーまでは出来たんですがそれ以降が見あたりません。もしかしてMS-DOSのソフトをインストールしなければなりませんか?その場合、いくらほどかかるかと、どのソフトがいいかも教えてください。度重なる質問して申し訳ございません。この似た質問全部見ましたが、あたしのは初歩的っすぎてありませんでした。

  • WinXP上で「MSCDEX.EXE」が必要なMS-DOS実行ファイルを起動するには?

    失礼いたします。 WindowsXP上で、MSCDEX.EXEが必要なMS-DOS実行ファイルを起動することは可能でしょうか?また、可能ならばその方法を教えてください。 16ビットのDOS窓がcommand.comで呼び出せることは調べ、MSCDEX.EXEも入手したのですが肝心の使用方法がわかりません。DOS窓上からMSCDEXを直接実行しても上書き確認(?)されるだけでした(無知で申し訳ない。 初心者な質問で申し訳ありませんが、どうぞ宜しくお願いいたします。 ちなみにMSCDEXが必要な実行ファイルを実行しようとしたときのエラーは error: require MSCDEX. です。

  • MS-DOSで起動って?

    以前別の方が質問されていたのですが、XPのPCでMS-DOSで起動するには・・・という内容です。 回答には”FDをフォーマットするときに「MS-DOSの起動ディスクを作成する」にチェックを入れて行います。 次いで、そのFDで起動すれば、MS-DOSモードで起動できます。”とありました。 上記についてものすごく初歩的な質問で申し訳ありませんがお願いします。 回答どおりにMSーDOS起動ディスクを作成して、FDを開いたら10個のアイコンが表示されていました。これらの内どれを開くんでしょうか?それとも「FDで起動する」のやりかたが間違ってるのでしょうか?ご回答宜しくお願いします。

  • MS-DOSを起動するときに実行されるファイルについて教えてください。

    MS-DOSを起動するときに実行されるファイルにそれぞれどんな役割があるか教えてもらえないでしょうか?

  • MS-DOSについて

    MS-DOSのPCにSCSIで外部ハードディスクをマウントさせるにはどのようにするか教えてください。 既にSCSIカードは入っており、DOSコマンドでフォーマットは終わっているのですがマウントすることが出来ません、FDISKお実行しても見えるのは内蔵ハードディスクのみです。もしかしたらMS-DOSでは無いのかもと思えていました。? よろしくお願いします。

  • エクセルVBAで、バッチ処理を起動すると・・・

    Windows/XP/pro、エクセル2002 使用です。 c:\autocsvフォルダーに、MS-DOSコマンドを使ってFTPを自動実行しサーバーからCSVを自動的に取得する.TXTファイルと、バッチファイルの.batファイルをおいています。 参考URL http://www.ponko2.com/ftp_bat.html この.batファイルをVBAから呼び出して実行させるように下記のコードを記述ましたが、ファイルは起動するものの、CSVファイルを取得(またはLogin)できません。Openメソッドを使ってもうまくいきませんでした。実行する関数の間違いと思っていますが、それとも、VBAからバッチファイルを実行する場合の何か決まりごと等があるのでしょうか? Sub test() Dim str As Variant str = Shell("c:\autocsv\auto.bat", vbNormalFocus) Application.Wait Now + TimeValue("00:00:10") End Sub (VBAの実行をステップインを使って1行ずつ実行してもファイルを取得できません) なお、.batファイルを単独で起動させた場合は、問題なくcsvファイルの取得はできています。 お手数ですが、ご指導いただけますようお願いします。

  • MS-DOSについて

    MS-DOSとフロッピーディスクについて パソコンにあまり詳しくありませんのでご了承ください。 工場の機械のプログラムを変えるのに、会社でパソコンを使ってます。 古いパソコンで、OSはwin95です。 そのパソコンで、MS-DOS?を起動して、いくつか文字を打ち込んでプログラムを変えるソフト?を起動できます。 いつもはそこでデータなどをプリントアウトする項目がありプリントして使ってるのですが、そのパソコンを移動した時に、プリンターも使えなくなり、違うプリンターでも何も出来なくなりました。 CDドライブがないのでデータは全部フロッピーディスクにコピーして持ってきました。 外付けFDDを買ってきまして、フロッピーに入ってるデータを自分のパソコンに入れました。 しかし、会社の古いパソコンにあったMS-DOSもないし、どうやってデータをプリントする項目まで行っていいのやら・・・まったくやり方がわかりません。 パソコンに入れたファイルの中に、MS-DOSプログラムへのショートカットってのがあったので押してみたのですが、DOS画面になって、小さい画面が出てきて、C\DOCUME~って書いてあり、プログラムファイルが無効です、PIFファイルを調べてくだい。って出てきます。 会社で使ってたときのように、DOS画面で文字を打ち込み、機械のプログラム変更へのソフトを起動するにはどうしたらいいでしょうか?宜しくお願いします!

  • WIN95のMS-DOSで

    WIN95でMS-DOSを使用しています。 WIN95でバッチファイルを実行し、終了しても MS-DOSの画面が消えませんが、それを閉じるボタン を押さずに消す方法(実行後自動に閉じる)はあり ますでしょうか? よろしくお願いいたします。

  • MS-DOSで空ファイルのコピー

    win98のDOSプロンプト使用時に疑問に思ったことです。 DOSコマンドの「copy」についてなのですが ファイル容量"0"の空ファイルは、コピーできないものなのでしょうか? DOSで空ファイルをコピーしようとした時、 「0個のファイルをコピーしました」の結果が返ってきます。 もちろんコピー先ファイルは存在しません。 同じくDOSの「move」コマンドでの空ファイルの移動は可能ですし、 UNIXでは空ファイルのコピーはできました。 また、winXPのコマンドプロンプトで行うと、空ファイルもコピーできました。 NT系のはMS-DOSではないので、動作が違ってもおかしくはないとは思いますが。 理由が単に、DOSが「空ファイルはコピーできない仕組み」を持っているのか、 はたまた他に原因があるのか。 ご教授いただきたく、よろしくお願いいたします。

  • Windows2000で MS-DOSを使うには?

    Windows2000は MS-DOSを持たない ということですが、DOSコマンドを使って何かしたい時にはどうしたらいいのですが? Freeソフトで、Windows2000でMS-DOSが使えるようにするものとかは ないのでしょうか? 教えてください。

専門家に質問してみよう