Windows 自動化ソフト UWSC
ユーザーのキーボード操作やマウス操作を記録して再生できるソフトです。この手のソフトはいろいろありますが、これがずば抜けて高機能です。
このソフトがすごいのは記録したスクリプトはテキストファイルなのでエディタで簡単に編集できることです。さらに、VBライクな構文が使えるのでちょとしたプログラムを作成することもできます。
よく知られたソフトなので、解説ページは探せばいろいろ見つかりますので、ここでは、AccessやExcelのVBAと連携して利用する例を紹介します。
ダウンロード インストール
概要は下記のページを参照してください。
ダウンロードは下記のページから。
シェアウェア版とフリー版があります。
フリー版でも十分使えますが、シェアウェア番だと、EXEファイルに出来たり、IEを自動操作できたりなどより高機能になっています。
インストールは、ダウンロードしたZIPファイル内のファイルを適当なフォルダーにコピーするだけです。
複合機のFAX送信の自動化
AccessのレポートやExcelのシートを複合機を使用してFAX送信する場合、「印刷」ダイアログからファクスドライバーを選択して[OK]をクリックすると下記のような宛先設定ダイアログが開きます。
ゼロックスの例
キヤノンの例
ここで、FAX番号や宛先名を入力して送信することになります。
このFAX番号や宛先名の入力を自動化したい場合、以前は、SendKeysステートメントでキー操作を送信してするという方法を使用していましたが、不安定だったり、環境によっては使用できなかったりしました。APIを使ってウィンドウハンドルを使用して直接文字列をセットしたりなどとしたこともありましたが、非情に面倒だし、やはり不安定でした。
そこで UWSC の登場です。まず、UWSCを起動します。[設定]ボタンをクリックして[高レベル記録]を選択します。
ダイアログや別アプリを操作する場合は、[高レベル記録]の方がお勧めです。ゲームなどでマウス操作を自動化するときなどは、[低レベル記録]がいいでしょう。
AccessのレポートやExcelのシートの印刷から、上記の宛先設定ダイアログを開きます。ここで、UWSCの右から2番めのボタン(ビデオカメラのアイコン)をクリックします。これで記録が開始されます。
宛先ダイアログをクリックして、FAX番号や宛先を入力してFAXを送信するまでの操作をします。
UWSCの[Stop]ボタンをクリックします。[保存](左から2番めのボタン)をクリックしてファイル名を SendFax として保存します。SendFax.UWS というファイルができますので、それをテキストエディターで開きます。
下記のような感じのテキストファイルになっています。下記はキヤノンの複合機の場合の例ですが、メーカーや機種によって異なってきます。標題や入力順が異なるだけで、基本的な部分はほぼ同じになります。
このままでは、FAX番号や宛先名が固定になってしまいますが、UWSCは実行するときにパラメータを渡すことができます。下記のように書き換えてください。
PARAM_STR[0]、PARAM_STR[1] で1番目のパラメータ、2番めのパラメータを取得できます。これでUWSC側の準備は完了です。
AccessのレポートをFAX送信する場合のVBAのコード例
Shell関数で UWSC.exe を起動します。パラメータの "/NI" はタスクバーにアイコンを表示しないという意味です。
その後に、UWSファイル(スクリプトファイル)名を指定し、さらにその後に、FAX番号と宛先名を指定します。
レポートを開くコードは、UWSC.exe 起動の後に記述します。
UWSCを起動してスクリプトファイルを開くと、最初の GETID で指定のダイアログが開くまで待機します。開くとそのダイアログに対しての操作を実行します。スクリプト処理が終わるとUWSC本体も終了します。
上記のスクリプトだとフォーム上のコマンドボタンをクリックすると一気にFAX送信してしまいますが、最後に確認したい場合は、スクリプトの最後を下記のようにコメントアウトします。(UWSCの場合は、// がコメントのマークです。)
これで確認ダイアログで止まりますので、[OK]クリックで送信、[キャンセル]クリックで中止と、選択できます。
また、SLEEP(1) は1秒間待機という意味ですが、環境によっては、もう少し減らしてもいいでしょう。当方の環境では SLEEP(0.2) としても安定して動作しています。
WEBサイトにファイルをアップロードする
VBAで、IE や WebBrowserコントロール を利用して、WEB操作を自動化するというときに困るのが、ファイルのアップロードです。以前は、アップロードするファイル名をブログラムからセット出来たのですが、セキュリティ上の関係で最近のバージョンではできなくなりました。
これも、UWSCのスクリプトと併用すると簡単に実現できます。
エディターで下記のスクリプトファイルを作成します。
ファイル名 FileDlg.UWS
VBAから、フォーム上に配置したWebBrowser上のページでファイルをアップロードする場合のコード例です。
まとめ
VBAで他アプリケーションとの連携や操作をする場合、いままで非情に面倒だっりり不可能だったことが、UWSCを利用すると簡単に実現でき、しかも安定して動作させることができます。
また、構文や関数、メソッドなどもVB並みに揃っており、ちょっとしたプログラミングも可能です。これで、フリー版でも商用利用可となっているのは素晴らしいです。
また、シェアウェア版も、EXEファイルを作成できるので配布する場合などは、利用したいですね。フリー版よりもさらに高機能で、1ライセンス6000円+消費税は格安だと思います。