Python

【Pythonで業務改善】PyAutoGUIでExcelを操作する

本記事ではPyAutoGUIの使い方について解説します。

今回はExcelを起動し、ファイルに名前をつけて保存し、Excelを閉じるまでの動作を自動化します。

安定的に動作させるには少しコツが必要です。

画面が必ず同じ大きさで同じ場所に出現するとは限らない状況でも正常に動作するよう、座標を指定したクリックは使いません。

以下の点を念頭においておくだけで安定した動作を実現可能となります。

・タイマーを設ける
・ショートカットキーを最優先で使用する
・移動はタブや矢印キーで行う

誤動作すると思いもよらない作業を始めてしまい大変危険です。

本記事で紹介するようなショートカットキーを多用して可能な限り安定した動作が得られる手法を選びましょう。

※本解説はwindows環境に限ります

準備

PyAutoGUIのインストール

インストールがまだの方はこちらの記事を読んで導入してください。

【Pythonで業務改善】PyAutoGUIでマウスとキーボードを操作する 本記事ではPyAutoGUIの使い方について解説します。 Python周りには便利なライブラリが豊富にあり、よく使われるOfficeな...

各種ライブラリのインポート

pyperclip:テキストの貼り付けに使います

datetime:ファイル名に日付をつけるために使います

import pyautogui as pg
import pyperclip
import datetime

タイマーの設定

全ての動作後に3s待機するように設定しておきます。

Excelが開ききっていないのに次の動作を始めてしまうようなことを防ぎます。

pg.PAUSE=3

Excelを開く

windowsキー ⇒ Excel起動

あらかじめ中身は空でいいのでtest.xlsxというファイルを作っておきます。

pg.press(‘win’)でwindowsキーを押す動作が指定できます。

Windowsの検索からファイルを起動すると再現性高く起動できるので覚えておくと良いです。

pyperclipでファイルのパスを内部で保持しておき(●●の部分は自身の環境に合わせて記入)、pg.hotkeyを使ってペースト動作を行い、エンターキーを押すまでを実行します。

pg.press('win')
pyperclip.copy(r'C:\Users\●●\test.xlsx')
pg.hotkey('ctrl','v')
pg.press('enter')

Excelを保存する

名前をつけて保存

ショートカットキー(fn12)を使用することで確実に動作させます。

pg.hotkey('fn','f12')

保存先の変更

今回は保存先を変更せずに保存しますが、

変更したい場合はTabキーを複数回使用することで確実に動作させる方法が安定します。

ファイル名の変更

デフォルトでファイル名のところにフォーカスされているので、名前を貼り付けるか書き込むだけでOKです。

もし保存先を変更した場合はTabで移動していきファイル名の入力部分に合わせます。

今回は実行した日付をファイル名にしたいので、datetimeを使って本日の日付データをtodayという変数に代入しておきます。

today=datetime.datetime.today()

ファイル名に使う文字列をfilenameとして、月-日-test.xlsxとなるように保存します。

filename=str(today.month)+"-"+str(today.day)+"-test"

コピー&ペーストでも貼り付けられますが、writeで入力する方法を使います。

どちらでも安定した動作が得られます。

pg.write(filename)

 

保存動作はショートカットキーで行います。

保存のボタンは「アンダーバー付きのS」になっているのでAlt+sのショートカットで実行できます。

pg.hotkey('alt','s')

Excelを閉じる

最後もやはりショートカットキーを使用します。

pg.hotkey('alt','f4')

以上でExcelを開き、名前をつけて保存、Excelを閉じるまでの一連の動作は完了です。

コード全体

import pyautogui as pg
import pyperclip
import datetime

pg.PAUSE=3
pg.press('win')
pyperclip.copy(r'C:\Users\●●\test.xlsx')
pg.hotkey('ctrl','v')
pg.press('enter')

pg.hotkey('fn','f12')
today=datetime.datetime.today()
filename=str(today.month)+"-"+str(today.day)+"-test"
pg.write(filename)
pg.hotkey('alt','s')

pg.hotkey('alt','f4')

以上で紹介は終わりです。

Mickey@コーヒー好きエンジニア

【製造業×プログラミング×AI】Python/VBAを活用した業務改善、Streamlit/Plotlyを活用したWebアプリ開発について初心者向けに発信中|趣味は自家焙煎コーヒー作り|noteでは焙煎理論を発信|ココナラではプログラミングに関する相談,就職/転職やコーヒーに関する相談などのサービスをやっています