• 締切済み

Dosのバッチをマクロにしたい

 以下の内容のDosバッチファイルがあるのですが、これをマクロ化してどのPCでも使えるようにしたいと思います。どのように書けば良いのかご指導ください。  DOS.batの内容は、概ね以下の通りです。 del I:\AAA\BBB\*.xls 'ワークブックの削除 D: cd D:\Program Files\Microsoft Office\Office\ MSACCESS.EXE    'ACCESSの立ち上げ I:\CCC\DDD\EEE.mdb 'EEE.mdbを開く(データベースの修正作業)  'これが終了したら(右上の×をクリックすると)次へ EXCEL.EXE      'Excelの立ち上げ I:\FFF\GGG\HHH.xls 'HHH.xlsを開く 'auto_openマクロが走る(終了すると) EXCEL.EXE       'Excelの立ち上げ(これは無駄?) I:\JJJ\KKK\LLL.xls 'HHH.xlsを開く 'auto_openマクロが走る '以下excelのマクロをいくつか走らせます。  よろしくお願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>それと、2のI:\***の方は全てのPCで同じです。というか、サーバーのアドレスです。 アドレスではなく、サーバの共有フォルダをネットワードライブとして接続しているということですよね。 そこが固定というのなら結構簡単になります。 > Dosについては、copyやdirなどの簡単なコマンドくらいならわかりますが、 そのレベルでかまわないと思いますよ。 あとはコマンドからアプリケーションが起動できれば 普通に使うくらいのバッチファイルは書けます。 > あと、VBScriptですか?それでも良いですが、 >VBScriptって、VBベースじゃなかったですか? >まぁ、VBもわからないんだけど。。。。。。。。 VBScriptもVBAも殆ど変わりませんよ。 VBベースというのはVBScriptもVBAも一緒ですけど。 で、ずっとVBAとかで実現するコードを書いてこなかったのですが、実は簡単にできないところが1点あります。 exeを実行して終了を待つというところです。 これをするのはVBAよりもDOSバッチのほうが楽です。 実現するとなると、OSが提供している関数(WindowsAPIといいます)を直接呼び出したり、MicrosoftがVBScript用に提供している機能を呼び出したりする必要が出てきます。 特に後者のほうは、古いOSでは標準で入っていない機能なので、注意も必要です。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

> 引き渡すのは、データですが。。。。そういう風には言わないのかな? 普通は引き渡すとは言いません。 引き渡すというと、1つ前の処理の結果を受けて、その内容をパラメータとして渡すというような感じになります。 MDBの中身を修正して、その後からExcelのマクロを動かして・・・ということですと、前後関係はありますが、あくまでもそれぞれを単独で動かしますよね。 >それと、AccessのマクロとVBAは違うのですか? >ExcelのようにマクロがそのままVBAのプロシージャに >書かれるわけではないということでしょうか? >確かに、Accessには、マクロと言うのがありますが。 はい、別物です。AccessでVBAを使う場合は「モジュール」というものになります。 Accessを単独で立ち上げ、新規にMDBファイルを作成すればすぐにわかると思います。 Accessのマクロは、日本語で処理を順番に指定していくものです。 > それで、どのPCでもちゃんと動くのか?って >ことだったんですね。すみません。 >それは、設定がわからないのかもしれませんが、 >動きません。環境的には、Win95~XPまで、 >EXcelも98~2003まで、節操もなく >色々な環境のPCがあります。 最初に示されたバッチファイルで環境に依存しそうなところは、 1.Officeのインストール先がフルパスで直接記述されている 2.MDBファイル、XLSファイルの場所がフルパスで直接記述されている です。 ここら辺が統一されているのであれば、そのままでも動くし、あまり考えずにVBAで作れるとは思いますが。 1.についてはなんとか回避できないこともないですが、2.MDBやXLSの場所に関してはどうしようもないですね。 Excelのマクロで作るとしてもファイルの場所を指定してもらう等の工夫をしない限り、他のいろいろなPCで動かすのは難しいと思います。 手でその都度環境に合わせて直すというのであればいいのですが、それでしたらDOSバッチでも変わりませんし。 > ただ、このDOSというものが、わからない人間が多くなってきています。 >(私を含めて)そんなこともあり、今後のことを考え >(今後も修正が必要になると思いますし)VBAで >書いておけば修正もできるかと考えたのですが。 うーん、VBAで作るにしろ、Windowsを使っていくのであればDOSを知っているべきですね。 特に今回のバッチ、明らかにVBAよりDOSバッチのほうが簡単にできます。 逆に、画面を表示して入力を促すようなことをするのでしたらDOSバッチでは不可能になりVBAの出番となります。 なので、VBAだけということではなく、DOSバッチも使えるようになるのがいいと思います。 #あと選択肢として、VBScriptという手もあります。 現在DOSバッチで動かしているのでしたら、置き換えるのでしたらこちらかと。

dogs59
質問者

お礼

 私の質問のケースでは、引き渡すとは言わないのですね。すみません。勉強になります。  フルパスの件ですが、1の方は、確かにマシンに依存しています。私、D:\Program Files\Microsoft Office\Office\ MSACCESS.EXE って書きましたねぇ。そこは、ほとんどが、c:\***ですね。一部のマシンは、後から、Msofficeを入れたので、d:\***だったりしますが。 それと、2のI:\***の方は全てのPCで同じです。というか、サーバーのアドレスです。  Dosについては、copyやdirなどの簡単なコマンドくらいならわかりますが、Dosでバッチファイルを作って何かをさせるというのは、ほとんどの人間が出来ません。今の時代(XPになってから)特に、Dosは使わなくなりましたしねぇ。  あと、VBScriptですか?それでも良いですが、VBScriptって、VBベースじゃなかったですか?まぁ、VBもわからないんだけど。。。。。。。。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>3については、AccessかExcelか。どちらにしても、立ち上げてもう一方のアプリケーションに引き渡す必要があるので。 何も引き渡されていない様に見えるのですが??? 開くmdbとxlsのファイルの指定しかないのは気のせいですか?しかも直接バッチファイルに書いてありますけど。 あと、AccessとExcelのマクロって、まったく別物なのですが。そのあたり理解されますか?AccessのマクロってVBAのことじゃないんですけど。 >回答いただけないのは、最終的に何故このままでは >だめなのかと言うことだと思うのですが、 >1,2についての理由が大きいところです。 補足をお願いした一番の理由は、「どのPCでも使えるようにしたい」と書いてあるのに、使えない理由がわからなかったからです。 ちなみに、AccessとExcelのどちらで作るにしても、バッチより難しくなりますけどいいんですか? 多分、このバッチの仕様だと、DOSバッチで作るのが一番簡単です。というか、他の手段だと結構面倒くさいですよ。

dogs59
質問者

補足

 ご指摘のとおりよくわかっていないのかもしれません。  引き渡すのは、データですが。。。。そういう風には言わないのかな? それと、AccessのマクロとVBAは違うのですか?ExcelのようにマクロがそのままVBAのプロシージャに書かれるわけではないということでしょうか?確かに、Accessには、マクロと言うのがありますが。  それで、どのPCでもちゃんと動くのか?ってことだったんですね。すみません。それは、設定がわからないのかもしれませんが、動きません。環境的には、Win95~XPまで、EXcelも98~2003まで、節操もなく色々な環境のPCがあります。流石に、Linuxのマシンで動かすことは今後もないと思いますが。  ただ、このDOSというものが、わからない人間が多くなってきています。(私を含めて)そんなこともあり、今後のことを考え(今後も修正が必要になると思いますし)VBAで書いておけば修正もできるかと考えたのですが。  その面倒くさいと言う一行で断念しようかとも思っていますが、でも、いずれ何かしらの対策はとらなくてはいけないし。  面倒でなかったら、(面倒だと言われていますが)教えて下さい。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

1,なぜマクロ化を?DOSのバッチのままではだめなのですか? 2.「どのPCでも」とありますが、このバッチで他のPCだと動かないという理由は? 3.マクロ化とありますが、何のマクロですか? Excel?Access?それ以外? 4.そもそもこのバッチ、正しく動くんですか? > 'これが終了したら(右上の×をクリックすると)次へ これができてないと思うんですけど。

dogs59
質問者

補足

 何故だめなのか? 1と2について、DOSバッチのままでだめな理由というのは、特にはないです。ではなぜ、マクロにしようとしているのか?ということになるかと思うのですが、このバッチで動かしているマクロを一括管理する必要があり、私を含めてDOSのことはほとんど覚えていないのです。(マクロも良くわからないのですが) 3については、AccessかExcelか。どちらにしても、立ち上げてもう一方のアプリケーションに引き渡す必要があるので。 4については、もちろん動きます。現に今動かしていますが、修正がきかない(出来ないだけですが)というのが、マクロ化したい理由です。  回答いただけないのは、最終的に何故このままではだめなのかと言うことだと思うのですが、1,2についての理由が大きいところです。  よろしくお願いします。