Python勉強中の皆さんこんにちは。
Excelでデータ化されているのに、なぜか業務ソフトにキーボードで入力している業務ってありませんか。それ、Pythonで解決できます。
想定する業務
・ExcelのA1からA5までのセルに売上データが入ったファイルがある
・それを業務ソフトのとある画面に入力をする
・まったくの単純作業でデータを見ながらなにかを判断しながら入力するわけではない。
具体的なPythonのコード
先に、pyautogui をインストールします。
command
!pip install pyautogui
業務ソフトの画面の位置情報をマウスの座標で取得するコード。
command
pyautogui.position() #現在のマウスのxとy座標を返す
業務ソフトを手動で立ち上げ、データ入力する画面を表示させ、ひとつめのデータが入力出来る状態にします。
そして、業務ソフトの画面上のどこかマウスカーソルを持っていきます。その状態で上記のコードを実行します。
Point(x=1184, y=191)
このような答えが帰ってきます。これかマウスの座標です。これを下記にあるコード内で、業務ソフトの画面をアクティブにする命令部分に用います。
続いてメインのコードです。
command from openpyxl import load_workbook # エクセルファイルを読み込みます
excel_path='C:\\・・・ファイルパス・・・\\ファイル名.xlsx'
workbook = load_workbook(filename=excel_path, read_only=True) # シートを読み込みます
sheet = workbook['ここにシート名を入力してくださいね'] # セル値取得してstr形式に変換、変数に代入
s10 = str(sheet['A1'].value)
s20 = str(sheet['A2'].value)
s30 = str(sheet['A3'].value)
s40 = str(sheet['A4'].value)
s50 = str(sheet['A5'].value) #読み込んだExcelファイルを形式上閉じます
workbook.close() #業務アプリをマウスのクリックでアクティブにします。
#座標1184,191の位置を1回だけ0.5秒間左クリックしなさいの意味
#マウス座標を調べるコマンドで得た座標をひとつめとふたつめに入れて下さい
pyautogui.click(1184, 191, 1, 0.5, 'left') #業務ソフトに入力する操作
#変数s10の値を入力してエンターを2回押し次の変数の入力移る、という動きです。
#お使いの業務ソフトに合わせてコマンドを調整してください。
pyautogui.typewrite(s10)
pyautogui.typewrite(['enter','enter'])
pyautogui.typewrite(s20)
pyautogui.typewrite(['enter','enter'])
pyautogui.typewrite(s30)
pyautogui.typewrite(['enter','enter'])
pyautogui.typewrite(s40)
pyautogui.typewrite(['enter','enter'])
pyautogui.typewrite(s50)
pyautogui.typewrite(['enter','enter'])
以上です。
まさにロボット
単純な動きになりますが、エクセルのデータをそのまま入力してくれますので、まさにロボットです。
エクセル業務が煩雑になっている現場は結構多いと思います。応用次第で可能性は無限大です。
おまけ
ショートカットキーを使いたい場合、文法は下記のとおりです。
command
pyautogui.hotkey('ctrl', 'c') # ctrl-c コピー