- ベストアンサー
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 "作業が完了しました。"
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (9)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- SHIMAPEE
- ベストアンサー率75% (154/203)
- rivoisu
- ベストアンサー率36% (97/264)
関連するQ&A
- VBSのsendkeysで日本語を出力したいです
WshShell.Run "explorer" WScript.Sleep 100 WshShell.AppActivate "explorer" WScript.Sleep 100 WshShell.SendKeys "C:\Users\Default\" WScript.Sleep 100 WshShell.SendKeys "デスクトップ" WScript.Sleep 100 WshShell.SendKeys "{ENTER}" WScript.Sleep 100 *.VBS ファイルに書き込んで、直接実行したいのですが、エラーになります。 どんなコマンドを足すといいのですか?
- ベストアンサー
- その他(プログラミング・開発)
- デフラグのスケジュールによる自動化
デフラグをタスクから自動化する為にJSで下記の様に設定したのですが最適化のボタンをクリックしてくれないので困っています。誰か教えて下さい。 var WShell = WScript.CreateObject("WScript.Shell"); WShell.Run("%SystemRoot%\\system32\\dfrg.msc"); WShell.AppActivate("ディスク デフラグ ツール"); WScript.Sleep(2000); WShell.Sendkeys("{TAB}{TAB}{TAB} "); 上記のまま設定すると分析のボタンをクリック後 終了するだけです。
- ベストアンサー
- その他(プログラミング・開発)
- JP1からvbs(PSExec)が起動できない
突然失礼します。 以下のサーバーAにあるvbsを、JP1から起動しようとしていますが、うまく起動しないので、もし原因が分かる方がいたら、ご教授願いたいです。 起動しようとしているサーバーAの「test.vbs」は、簡単に言うと、PsExecを利用して、サーバーBの「hoge.bat」を実行する内容です。 ***test.vbs*** Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "PsExec.exe サーバーBIPアドレス -u 実行ユーザ -p 実行ユーザーパスワード cmd" WshShell.AppActivate "cmd " WScript.Sleep 3000 WshShell.SendKeys "cd C:\" WshShell.SendKeys "{enter}" WshShell.SendKeys "hoge.bat" WshShell.SendKeys "{enter}" WScript.Sleep 10000 WshShell.AppActivate "cmd" WshShell.SendKeys "exit" WshShell.SendKeys "{enter}" ************************ 上記バッチを手動で実行するとうまくいくのですが、 JP1で起動しようとすると、うまくいきません。 そもそもPsExecが実行出来ていないかも。。。。 宜しくお願いします。
- 締切済み
- Visual Basic
- VBScript
下記、プログラムを実行すると、コマンドプロンプトの画面が 消えずに、そのまま残ってしまいます。 どうしたら、画面を消すことができるでしょうか。 お力添えをお願いいたします。 Set WshShell = Wscript.CreateObject("WScript.Shell") Set WshEnv = WshShell.Environment("user") WshEnv("C:\NET\aaa.txt") = "administrator" Wshshell.Run("cmd.exe") WScript.Sleep(500) WshShell.SendKeys("runas /user:administrator " + chr(34) + "xcopy D:\NET\aaa.txt C:\NET\aaa.txt" + chr(34)) WshShell.SendKeys("{Enter}") WScript.Sleep(500) WshShell.AppActivate "C:\WINDOWS\system32\runas.exe" WshShell.SendKeys("XXXXX") WshShell.SendKeys("{Enter}") WScript.Sleep(500)
- ベストアンサー
- その他(プログラミング・開発)
- Windows 7 でのWSH の挙動
お世話になります。 msdnにある「電卓をアクティブにするサンプルを Vistaで実行すると、電卓がアクティブになり、 計算結果を吐き出しますが、 Windows7(Pro,SP1)で実行すると 最前面に電卓が出るものの アクティブになっていない上に、 複数の電卓がどんどん立ち上がってきます。 Vistaと7で、プロセス(?)の管理が 変わっているのだと思います。 7でも電卓をアクティブにするには、 どうすればいいのでしょうか? 以下コードです。 ================================================ set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" WScript.Sleep 100 WshShell.AppActivate "Calculator" WScript.Sleep 100 WshShell.SendKeys "1{+}" WScript.Sleep 500 WshShell.SendKeys "2" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 500 WshShell.SendKeys "*3" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 2500 ================================================
- 締切済み
- Windows 7
- マザーボードを換えたらVBSからの休止が出来なくなりました。
こんにちは。 表題の件ですが、以前容易に”休止”に移行する為にVBSを使用しての 休止をアドバイスしていただいたのですが、今回表題に記したように マザーボードを換えたら以下のスクリプトで休止できなくなりました。 Set wShell=CreateObject("WScript.Shell") wShell.SendKeys "^+{esc}" Do While Not wShell.AppActivate("Windows タスク マネージャ") WScript.Sleep 100 Loop wShell.SendKeys "%uh%fx" '休止状態 なぜなのでしょう?アドバイスをお願いします。 ちなみに以前のマザーボード(ASUS P5-VMDO)で効果のあったScript.Sleep 100と記されてる行の数値を弄って見ましたが待機時間が変わるだけで”休止”になりませんでした。 現在のマザーボードはASUS P5Q Deluxeです。
- ベストアンサー
- Windows XP
- WSHスクリプトでブラウザ更新
教えてください。 WSHスクリプトでブラウザの更新をF5ではなくてControl + Rしたいのです。 Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 2000 WshShell.AppActivate "テスト" WScript.Sleep 2000 WshShell.SendKeys "^R" WScript.Sleep 2000 WScript.Echo "終了" 最初の一回目の実行時はできるのですが、それ以降更新してくれません。 よろしくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- 実行中のSendkeysのVBSを途中で停止したい
下記のような実行中のSendkeysのVBSを途中で 停止するにはどうすればよいのでしょうか? Set s = WScript.CreateObject("WScript.Shell") for i=1 to 100 s.SendKeys i WScript.Sleep 500 next ご存知の方がおられましたらご回答をよろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- WSHを使いTELNETで%USEPROFILE%\デスクトップにファイルを複写したい
WSHをはじめたばかりです。TELNETで接続した現在の相手のデスクトップにファイルを複写させたいと考えています。 DOSのように指定したのですがカナ文字や%がうまく渡されていないようなのですがどのように設定すればよいか教えてください。 下記のように作成しています。 よろしくお願いします。 set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "確認" WScript.Sleep 1000 adr = InputBox("端末IPアドレスを入力してください。", 1) adr = "telnet " & adr & "~" rem telnet ホスト名 WshShell.SendKeys adr WScript.Sleep 2000 rem ユーザー名 WshShell.SendKeys "administrator~" WScript.Sleep 1000 rem パスワード WshShell.SendKeys "administrator~" WScript.Sleep 1000 rem コマンド WshShell.SendKeys "cd %USEPROFILE%\デスクトップ~" WScript.Sleep 3000 rem あとCOPYによる複写コマンドの記述
- ベストアンサー
- その他(プログラミング・開発)
- 特定のフォルダを階層下まで表示を変えたい
ほかのカテゴリで質問したのですが回答がありませんでした。 すべてのフォルダではなく、ある特定のフォルダの表示だけを階層下まで「詳細」に変更したいのです。 すべてのフォルダですとWindowsの処理で可能ですし、階層下までをしなくてもいいのなら、WSHで下のように書いて、その中へフォルダをドラッグしたらできました。 '----------------------------------------------------- Set objShell = WScript.CreateObject("WScript.Shell") objShell.SendKeys "{ENTER}" WScript.Sleep 200 objShell.SendKeys "%V" WScript.Sleep 200 objShell.SendKeys "^D" WScript.Sleep 200 objShell.SendKeys "%{f4}" '---------------------------------------- どなたか、階層下まで同じ処理をする方法か、それともそのような処理ができるフリーソフトをご存知ないでしょうか?
- 締切済み
- フリーウェア・フリーソフト
お礼
ありがとうございます。 特にお勧めのだけ、自分は知らなかったです。 他は初心者には少々敷居が高いようですから。 Lotusのメールを一括でexportすることはできないようです。 一通一通exportすることはできます。 Export可能なデータの型は、 ASCII text CBM Image Microsoft RTF TIFF Image です。 一括でやろうとすると Calender File(.jcs) Comma seperated Value Lotus 1-2-3 structured text Tabular text で保存できるようですが、文字化けします。 また、化けた文字の数から、おそらくタイトルと送信者などの情報しかexportされていないようです。 1、2、エクセルを操作するためのコマンドということは、たとえばそのコマンドからLotusや、メモ帳などを操作できないので、他のプラグラムが割り込んでも、操作ができないので、エラーとして処理が中止されるという理解でよろしいでしょうか? 重ね重ねありがとうございます。