WSHで自動化ソフトを作りたいけど、エクセルとの連携、エラー防止はどうすれば?
以下の業務を自動をするために、WSHでプログラムを作っていますが、4点困っていることがあります。
●●●業務内容●●●
1、業務のメールボックスをactivateする。
2、sendkeys("{Enter}")を使って、メールを開く。
3、AlTからEditツールのEDIT、を選択し、メールを編集状態にする。
4、CTRL+Fで、文字列検索。(「発表日」を検索します。)
5、「発表日」の下に発表される日時が8桁で表示されているので、sendkeysを使い、コピー。
6、業務に使うエクセルファイルをactivateする。
■■ここでVBAを使いたいのですが、WSH内のプラグラム内で、VBAを入力することは可能でしょうか?■■
7、エクセルファイルを開いたら、発表日がある列の空白セルのひとつにペースト。(上のセルから順にペーストしていくので、 i=1 activate.cells(F,i) i=i=1 do while i=10のようにコマンドするつもりです。)
8、業務のメールボックスを再びActivateする。
■■(業務のメールボックスは新しいメールをタブでふぴじする仕組みになっているので、どうのようにActivateすればいいか困っています。)■■
9、開いてあるメールを閉じる。(Sendkeysで閉じる予定です)(これから処理する全てのメールを開いたまま、プログラムを実行すれば、確実にエラーが起きるような数のメールなので。)
10、メールボックスに戻るので、{down}と{enter}で次のメールを開く。
繰り返し。
●●●困っていること●●●
1、sendkeysをなるべく使わずに実行したい。
sendkeysでは、たとえば他のプラグラム(セキュリティーソフトなど)が実行された場合でも、そのまま実行され続けるので、リスクが大きい。
2、仮に1で書いたような事態が起きた場合、プログラムを自動的に停止するようにしたいが、どのやってコンピューターにエラーが起きていると判断させるかわからない(違うメールやプログラムを開いている場合に呈する等)。
3、エクセルと連携させて、Sendkeysを減らしたい。
4、繰り返し処理はこの場合、どうやって命令するのか。
●●●今のコード●●●
var WShell = WScript.CreateObject("WScript.Shell");
WShell.AppActivate("業務に使うメールソフト(別のウィンドウに開いてある必要があります)");
WShell.Sendkeys("{ENter}");
WScript.sleep(100);
WShell.sendkeys("%");
WScript.sleep(100);
WShell.sendkeys("a");
WScript.sleep(100);
WShell.sendkeys("d");
WScript.sleep(100);
WShell.sendkeys("^F");
WScript.sleep(100);
WShell.sendkeys("検索したい文字列");
WScript.sleep(100);
WShell.sendkeys("{ESC}");
WShell.sendkeys("{DOWN}");
WScript.sleep(100);
WShell.sendkeys("+{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}");
WScript.sleep(100);
WShell.sendkeys("^c")
WScript.sleep(100);
WShell.AppActivate("EXCEL");
WScript.sleep(10000);
WShell.sendkeys("セルまで移動")
WShell.sendkeys("^V");
WShell.AppActivate("業務に使うメールソフト");
WShell.sendkeys("%");
WShell.sendkeys("w");
WShell.sendkeys("window がある番号");
WShell.sendkeys("%");
WShell.sendkeys("^W");
WShell.sendkeys("{DOWN}");
WScript.Echo "作業が完了しました。"
お礼
ありがとうございます。 やっとうまくできました!