IT仕事

Cliborのマクロでウィンドウ操作&コピペを楽にする

投稿日:2018年2月23日 更新日:

Clibor、便利だわ~。もう大好き。

今回はこんなコードをご紹介。私が作った。えへ。
まあProの方々から見れば、全然大した頃は無いのでしょうが。

# -*- coding: utf-8 -*-
#<$C_CLB_PYTHON/>
import win32api
import win32com.client
import win32clipboard as CB
#
win32api.Sleep(200)
shell = win32com.client.Dispatch("WScript.Shell")
#
CB.OpenClipboard()
CB.EmptyClipboard()
CB.CloseClipboard()
shell.SendKeys("^c")
#
win32api.Sleep(200)
shell.SendKeys("%{TAB}")
win32api.Sleep(200)
shell.SendKeys("^a")
win32api.Sleep(200)
shell.SendKeys("^v")
win32api.Sleep(200)
shell.SendKeys("{ENTER}")

これでもって何ができるかというと。

例えば、Windowsでウィンドウを2枚開いているとして、片方はExcelで作ったID一覧、もう片方は業務システムのID検索フォームとする。

Excelのアクティブセルのデータを、Cliborでコピペして、Pythonに渡し、PythonのSendkeysでウィンドの切り替えと、フォームのテキストボックスの全選択と、それを上書きする形での貼付け、そしてEnterキーの動作といった、一連の操作をしてくれる。

私の仕事では、毎日上記の操作をキーボードだけで、20回-30回やっているので、指が疲れる。

このマクロで、少し楽になるかな。

Cliborの作者さま、そしてPythonに感謝。

追記:改良版2018/02/26(月)
最初に、ウィンドウを切り替えるのと、カーソルキーで一つ行を下げる動作を追加した。また、切り替えが早いからか自分の環境ではおかしなことが起こるときがあったので300ミリ秒単位にしてみた。さらにALT+1キーのショートカットキーで実行するようにした。

# Alt + 1 で実行
# -*- coding: utf-8 -*-
#<$C_CLB_PYTHON/>
import win32api
import win32com.client
import win32clipboard as CB
#
win32api.Sleep(300)
shell = win32com.client.Dispatch("WScript.Shell")
#
win32api.Sleep(300)
shell.SendKeys("%{TAB}")
win32api.Sleep(300)
shell.SendKeys("{DOWN}")
#
CB.OpenClipboard()
CB.EmptyClipboard()
CB.CloseClipboard()
shell.SendKeys("^c")
#
win32api.Sleep(300)
shell.SendKeys("%{TAB}")
win32api.Sleep(300)
shell.SendKeys("^a")
win32api.Sleep(300)
shell.SendKeys("^v")
win32api.Sleep(300)
shell.SendKeys("{ENTER}")

-IT仕事

執筆者:

関連記事

アンケートソフト秀吉でMAを作るためのExcel自作関数

会社の同僚用に作った。 複数列の回答を「1,2,4」のように1列にしたり、3は無ければ飛ばしたり、先頭と末尾にはカンマつけないで、とか、手作業だと色々面倒な処理を、Excelマクロにした。 以下を標準 …

no image

TeamViewer「指定のネットワークアドレスではパートナーに接触できません」

TeamViewerの、リモートする側・される側のバージョンが違うと、リモートコンピュータのパートナーIDを入れて相手に接続しようとした場合に、 「指定のネットワークアドレスではパートナーに接触できま …

no image

メモ

人力検索系検索エンジン http://www.google.com/coop/cse?cx=014964622409527844895%3Avyzxwte8f7e こんなの欲しかった。 最近、「IT仕 …

no image

パラメータクエリにパラメータをセットして実行した結果をデータシートで表示する」というコードの実行で3065エラー

Accessの仕様として、パラメータクエリだけが駄目なのかと思ったら、なんと選択クエリが駄目なのだそう。 理由は、Executeメソッドはアクションクエリのもので、選択クエリのものではないからだそう。 …

no image

AutoHotkeyでNumLockキーをBackSpaceに入れ替え

会社で使っている、HP ProBook470のキーボードが使いにくい。 BackSpaceが小さく、隣のNumLockを間違えて押してしまう。 以下のリンクを参考に、AutoHotkeyというソフトで …