マクロは PC 上の操作を自動化する機能のことです。
私はよくブログに書くように、Excel VBA でマクロを作って Excel内での操作を自動化します。
Excel マクロとは別にいわゆる Windows 画面での操作を自動化する Windows マクロというものも存在します。
Windows マクロを作るためには、UWSC というプログラミング言語を使う必要があります (他にもWindows マクロを作る方法はあるのかもしれませんが、私は知りません)。
これを使えるようになれば、会計事務所・経理職の業務で色々と活用することができます。
今日は、まず UWSC の初歩的に使い方について説明します。
1、UWSC をはじめるには
UWSC は umiumi さんという方が開発されたプログラミング言語で、リリース以来バージョンアップを繰り返しています。
この言語の用途は、先にも書いた通り「Windows の作業を自動化するための Windows マクロを作ること」です。
FREE版と有料版(6,480円)があり、こちらからダウンロードできます。
有料版の方ができることが多くて便利だと思いますが、FREE版でも十分に活用できます。
ダウンロードして展開すると、以下のようなファイルが生成されます。
使うためには「UWSC.exe」ファイルをダブルクリックして起動します。
UWSC が起動すると、以下のような操作画面が出てきます。
2、UWSC の使用手順
さて、UWSC を初めて使う方に向けて、どのように使ったら良いか一番簡単な使用手順を示すと以下のようになります。
①Windows の作業を記録する
②記録した作業の UWSC コードを保存する
③保存した UWSC コードを編集し、不要な部分を削除する
上記の作業手順で一例として
Windows アプリのメモ帳をショートカットで開いて「test」と記述する作業を自動化してみたいと思います。
以下、順に説明してきますね。
①Windows の作業を記録する
まずは、Windows の作業を記録します。
記録するためには、記録ボタン(以下の赤枠で囲った箇所)をクリックします。
すると、以下のように記録中のメッセージが出た状態になるので、このまま行いたい作業を行います。メモ帳を開いて「test」と記述しましょう。
作業が終わったらストップボタン(以下の赤枠で囲った箇所)をクリックします。
これで、録画が完了します。
以下に、上記の作業の記録方法を動画で示しておきますね。
②記録した作業の UWSC コードを保存する
さて、作業を記録したら UWSC コードが生成されますので、それを保存しなければなりません。
保存ボタン(以下の赤枠で囲った箇所)をクリックします。
保存先のフォルダを選択しファイル名を付けて保存します。
*ファイルの種類は「UWScript Files(*.uws)」となります。デフォルトでこれが選択されているので何もする必要はありません。
③保存した UWSC コードを編集し、不要な部分を削除する
さて、ここまでで作成した UWSC コードを開いてみます。
ファイル名はuws形式で「test.uws」のようになっていますが、ダブルクリックすればテキスト形式で開くことができます。
開くと以下のような UWSC コードが表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
MMV(420,153,734) MMV(418,154,16) MMV(414,156,16) MMV(412,157,10) MMV(409,159,15) MMV(404,161,47) MMV(386,167,10) MMV(375,170,10) MMV(364,172,10) MMV(360,174,16) MMV(344,176,10) MMV(329,178,10) MMV(316,180,15) MMV(304,183,10) MMV(290,185,16) MMV(277,187,16) MMV(271,188,10) MMV(256,190,15) MMV(241,193,10) MMV(226,195,10) MMV(210,199,16) MMV(196,202,10) MMV(181,206,15) MMV(176,207,10) MMV(164,210,16) MMV(142,215,10) MMV(133,217,10) MMV(123,220,16) MMV(120,220,15) MMV(105,224,16) MMV(98,226,10) MMV(92,228,47) MMV(82,231,47) MMV(81,232,31) MMV(78,236,10) MMV(77,239,16) MMV(75,241,10) MMV(74,244,15) MMV(72,246,10) MMV(72,247,16) MMV(71,249,10) MMV(70,250,31) MMV(68,256,16) MMV(67,258,10) MMV(66,260,10) MMV(65,262,15) MMV(65,263,10) MMV(65,265,10) MMV(65,267,16) MMV(64,267,10) MMV(64,268,31) MMV(63,272,10) MMV(62,273,10) MMV(62,275,10) MMV(61,276,15) MMV(61,277,10) ACW(GETID("無題 - メモ帳","Notepad"),211,194,1124,647,0) BTN(LEFT,CLICK,61,277,406) BTN(LEFT,CLICK,61,277,47) ACW(GETID("無題 - メモ帳","Notepad"),211,194,1124,647,0) MMV(61,277,594) MMV(64,277,31) MMV(75,277,10) MMV(112,277,16) MMV(122,277,15) MMV(128,277,10) MMV(134,277,16) MMV(138,277,47) MMV(151,277,10) MMV(152,277,62) MMV(153,277,31) MMV(153,277,16) MMV(154,277,16) MMV(158,277,62) MMV(182,277,10) MMV(186,277,10) MMV(190,277,16) MMV(194,276,10) MMV(195,275,15) MMV(198,274,10) MMV(202,274,16) MMV(206,273,31) MMV(221,270,10) MMV(223,270,10) MMV(224,270,47) MMV(225,269,31) MMV(226,269,16) MMV(227,269,15) MMV(228,268,78) MMV(229,268,16) MMV(230,267,31) BTN(LEFT,CLICK,230,267,172) KBD(VK_T,CLICK,750) KBD(VK_E,CLICK,141) KBD(VK_S,CLICK,359) KBD(VK_T,CLICK,188) MMV(231,263,859) MMV(232,257,10) MMV(235,245,16) MMV(236,241,31) MMV(237,238,47) MMV(237,230,10) MMV(237,228,10) MMV(238,227,16) MMV(238,226,16) MMV(239,226,31) MMV(241,224,10) MMV(243,221,10) MMV(245,216,10) MMV(246,212,16) MMV(246,209,10) MMV(246,207,16) MMV(247,205,46) MMV(257,198,10) MMV(261,195,16) MMV(269,191,10) MMV(273,189,16) MMV(278,186,10) MMV(279,185,10) MMV(282,184,15) MMV(283,183,47) MMV(287,180,10) MMV(290,178,10) MMV(291,177,16) MMV(294,175,10) MMV(296,174,10) MMV(298,172,15) MMV(299,170,16) MMV(300,170,10) MMV(301,169,47) MMV(302,167,10) MMV(303,164,10) MMV(303,163,62) MMV(304,163,16) MMV(305,162,15) MMV(306,161,16) MMV(307,159,31) MMV(307,158,31) MMV(308,157,16) MMV(309,155,10) MMV(310,155,47) MMV(311,154,10) MMV(312,154,10) MMV(312,152,15) MMV(313,151,63) MMV(313,150,31) MMV(314,150,47) MMV(314,150,94) MMV(315,150,15) MMV(316,150,47) MMV(316,150,31) MMV(317,149,63) MMV(320,148,10) MMV(321,148,109) |
UWSC コードの実行
この UWSC コードを実行してみましょう。
読込みボタン(以下の赤枠で囲った箇所)をクリックして実行するファイルを選択します。
先に作成した「test.uws」を選択しましょう。
これで読込みが完了し実行できる状態になりました。
再生ボタン(以下の赤枠で囲った箇所)をクリックして実行します。
先ほど記録した作業が再現されるので、動画で確認してみて下さい↓
不要な部分を削除する
さて、上記のように記録した内容と全く同じ作業を実行できるわけですが、生成された UWSC コードのうち無駄な部分を削除することによって、記録した作業をより早く実行できるようにしましょう。
まず、先のコードを見てすぐに分かるのが「MMV(228,268,78)」のように MMV が付く記述が大量にみられます。
これは、マウス操作を意味するものです。
先ほど、作業を記録する際にメモ帳のショートカットをダブルクリックして起動させるためのマウスの動きや、メモ帳の中にカーソルを合わせるためのマウスの動きを表しています。
MMV についての詳細は割愛しますが、マウスの動きは不要なのでまず全ての MMV を消します。
すると UWSC コードは以下のようになります。
1 2 3 4 5 6 7 8 9 |
ACW(GETID("無題 - メモ帳","Notepad"),211,194,1124,647,0) BTN(LEFT,CLICK,61,277,406) BTN(LEFT,CLICK,61,277,47) ACW(GETID("無題 - メモ帳","Notepad"),211,194,1124,647,0) BTN(LEFT,CLICK,230,267,172) KBD(VK_T,CLICK,750) KBD(VK_E,CLICK,141) KBD(VK_S,CLICK,359) KBD(VK_T,CLICK,188) |
残ったコードのうち、さらに無駄な部分を省きます。
ACW(GETID(“無題 – メモ帳”,”Notepad”),211,194,1124,647,0)
上記はメモ帳を開く部分です(詳細は割愛します)。
このコードが2つ見られる(なぜ2つ出てくるか理由は分かりません)ので、最初の方(1行目)を削除します。
2行目、3行目の
BTN(LEFT,CLICK,61,277,406)
BTN(LEFT,CLICK,61,277,47)
上記の部分はメモ帳のショートカットをダブルクリックして実行している箇所です(ダブルクリックだから2回 BTN の記述があります)。
左クリックについては「BTN(LEFT,CLICK,x座標,y座標,時間)」のように記述します。
x座標,y座標はクリックする箇所の座標、時間はクリックしている時間(ms)を表します。
時間はどれだけ短くても左クリックさえしていれば良いので0とし、この部分を以下のように変更します。
BTN(LEFT,CLICK,61,277,0)
BTN(LEFT,CLICK,61,277,0)
同様に、メモ帳を選択するための「BTN(LEFT,CLICK,230,267,172)」の部分(5行目)も「BTN(LEFT,CLICK,230,267,0)」とします。
6行~9行目の
KBD(VK_T,CLICK,750)
KBD(VK_E,CLICK,141)
KBD(VK_S,CLICK,359)
KBD(VK_T,CLICK,188)
上記の部分は、「test」の文字を入力している箇所です。
キーボード操作については「KBD(キー,状態,時間)」のように記述します。
キーに関して、tはVK_T、eはVK_E、sはVK_S、tはVK_T のように書きます。
状態については、クリックしたい場合はCLICKと書きます。
時間はキーボード操作をしている時間(ms)を表しますが、これも先ほど同様にできる限り早く操作を終わらせたいので 0 にしておきます。
以下のように変更します。
KBD(VK_T,CLICK,0)
KBD(VK_E,CLICK,0)
KBD(VK_S,CLICK,0)
KBD(VK_T,CLICK,0)
さて、これにより先ほどのコードは時間の部分を全て 0 について以下のように変わりました。
1 2 3 4 5 6 7 8 9 |
ACW(GETID("無題 - メモ帳","Notepad"),211,194,1124,647,0) BTN(LEFT,CLICK,61,277,0) BTN(LEFT,CLICK,61,277,0) ACW(GETID("無題 - メモ帳","Notepad"),211,194,1124,647,0) BTN(LEFT,CLICK,230,267,0) KBD(VK_T,CLICK,0) KBD(VK_E,CLICK,0) KBD(VK_S,CLICK,0) KBD(VK_T,CLICK,0) |
新しいコードを実行してみましょう。無駄な作業が無くなって早くなっていることが確認できます。
3、まとめ
今一度、記録したままのコードと無駄な部分を省いたコードの速度の違いを確認してみて下さい。
記録したままのコード
無駄な部分を省いたコード
このように、UWSC の一番簡単な使い方は、まずは自分が行いたい作業を記録してちょい手直し(無駄な部分を削除する)というやり方になります。
他にも色々とコードはありますが、まずはてきとうに画面操作を記録して手直しするところから始めることをお勧めします。
使い慣れてくると、例えば Excel と会計ソフトを連動させるような操作をすることなどができるようになります。
経理職や会計事務所の仕事において、会計ソフトを使うのが主流である今、手書きの伝票は使う必要はありません。最初から会計ソフトに仕訳を入力すれば事足ります。しかし、現実には様々な事情がありどうしても伝票を作らなければならないことがあります。私の場合は、手書きの振替伝票は使わずに Excel で作った振替伝票にPC上で仕訳を入力しています。そして、振替伝票に入力した仕訳をマクロ(Excel VBA、UWSC)を使って、会計ソフトに自動で取り込む仕組みを作ってあります。*なお、今日これから紹介する振替伝票と同様に、マクロ(... Excel で作る振替伝票、マクロ機能(Excel VBA、 UWSC)を使って会計ソフトに仕訳デ... - My タックスノロジー |
また Excel で作成した保険料控除申告書の内容をワンクリックで JDL の年末調整システムに取り込む仕組みも作りました。
年末調整時に「給与所得者の保険料控除申告書兼給与所得者の配偶者特別控除申告書」(以下、保険料控除申告書と呼びます)を作成しなければなりません。そして、保険料控除申告書の内容を税務ソフトに入力しなければなりません。私がいる会計事務所では、税務ソフトはJDLの「年末調整システム」を使用しています。従来は紙の保険料控除申告書に手書きで記載した内容を見ながら、年末調整システムに手入力していました。私が事務所に入った後に、業務改善を行い Excel で作った保険料控除申告書に PC上で入力した後に、ワンクリックで年... マクロ(Excel VBA + UWSC)を使った業務効率化事例 Excel 保険料控除申告書に入力... - My タックスノロジー |
UWSC については以下のサイトがとても参考になります。
また、本も出ており私はたまに辞書として活用させて頂いております。