こんにちは、さすを(@sasuwo0409)です。
いきなりですが、
ExcelのボタンからPythonを実行したい!
と思ってはいませんか?
今回の記事は、ExcelのボタンからPythonを実行する方法を解説していきます。
この記事を読めば、Excelのボタンを押すだけで簡単にPythonプログラムを動かせるようになります。
それでは本文をどうぞ。
Excelのボタンを押してPythonを動かしたいんだけど、やり方がわからないな。
あと、Excelのボタンがあるシートにデータを反映させたいんだけどどうすればいいのかも知りたいな。
これらの悩みを解決します!
※0円のサンプルテキストという近道
独学よりプログラミングスクールの方が効果は出やすいですが、値段が高く、なかなか手を出しづらいですよね。techgymでは無料のサンプルテキストと解説動画をもらえるので、これを使ってお得にPythonの基礎を学ぶのもオススメです。
最短1分でできる!
ExcelのボタンからPythonを実行する方法
まず初めに、今回実施した開発環境はこちらです。
それではここから、ExcelのボタンからPythonを実行する方法を解説していきます。
ExcelのボタンからPythonを実行する方法は以下の4ステップです。
- フォルダ・ファイルを作成する
- ライブラリ・モジュールをインストールする
- Pythonでプログラムを書く
- Excelでvbaを書く
なお、今回のPythonプログラムは「フォルダ内の画像をExcelシートに張り付ける」というものです。したがって、Excelのボタンを押すとPythonプログラムが実行され、画像がExcelシートに張り付けられるという流れになります。
その①:フォルダ・ファイルを作成する
今回は、デスクトップ上に新規フォルダ「Python」を作成し、その中に画像を入れたimgフォルダやExcelファイル、プログラムを作成しています。
Python
-----img
-----excel_execution.py(Pyファイル)
-----button_python.xlsm(vbaを書くシート)
-----sample.xlsx(画像が張り付けられるExcelシート)
フォルダ構成を変更しても問題ありませんが、後述するプログラムの保存先フォルダ名が変わるので注意してください。
なお、張り付ける画像は事前に準備し、imgフォルダに格納しておく必要があります。まだ準備できていない場合は「【コピペOKです】Pythonを使って自動でGoogle画像を収集する方法を徹底解説!」の記事が参考になると思います。
その②:ライブラリ・モジュールをインストールする
この処理を実行するために必要なライブラリ、モジュールは以下の2つです。
すでにインストール済みの方は飛ばしてください!
まず初めにターミナルを開きます。検索窓に「ターミナル」と入力します。
ターミナルが開いたら、ライブラリ・モジュールをインストールします。今回は作成したフォルダの直下にインストールしていきます。
これでプログラムを書く準備はOKです。
その③:Pythonでプログラムを書く
ライブラリ・モジュールのインストールが終わったら、画像をExcelに張り付けるPythonプログラムを作成します。
今回は「Pythonを使って複数枚の画像を自動でExcelに張り付ける方法を徹底解説!【図解あり】」で解説したプログラムを活用しているので、全く同じものを作りたい場合は、そちらを参考にしてください。
なお、プログラムはどんな名前でもOKです。
僕は「excel_execution.py」という名前にしました!
その④:Excelでvbaを書く
プログラムが書き終わったら、ボタンを作成し、「button_python.xlsm」にvbaを書いていきます。
ボタンの作成方法は「【Excel】vbaで別シートからランダム抽出する方法【コピペOKです】」で解説しているので、作り方がわからない方は参考にしてみてください。
画像を自動でExcelに張り付けるvbaはこちらです。
Sub img_output()
Dim WSH As Object
Dim Path As String
Set WSH = CreateObject("WScript.Shell")
'PyファイルのPath
Path = ThisWorkbook.Path & "\excel_execution.py"
'Pyファイルの実行
Call WSH.Run("Python " & Path, WaitOnReturn:=True)
Set WSH = Nothing
MsgBox "処理が完了しました"
End Sub
実行結果:
作成したボタンを押すと、「sample.xlsx」に画像が張り付けられるのが確認できます。
同じマクロブック上に画像を張り付けたい場合
中には別ファイルではなく、vbaを書いたシートと同じ場所に画像(データ)を張り付けたい場合もあると思います。
そんなときは、vbaをこのように変更すればOKです。
Sub img_output()
Dim WSH As Object
Dim Path As String
Set WSH = CreateObject("WScript.Shell")
'PyファイルのPath
Path = ThisWorkbook.Path & "\excel_execution.py"
'Pyファイルの実行
Call WSH.Run("Python " & Path, WaitOnReturn:=True)
'excel_pasteプログラムの呼び出し
Call excel_paste
Set WSH = Nothing
MsgBox "処理が完了しました"
End Sub
Sub excel_paste()
Dim Path
Application.ScreenUpdating = False
'sample.xlsxのPath
Path = ThisWorkbook.Path & "\sample.xlsx"
'sample.xlsxを開く
Workbooks.Open Path
'データをコピー
Workbooks("sample.xlsx").Worksheets("Sheet1").Range("A1:K60").Copy _
Workbooks("button_python.xlsm").Worksheets("Sheet1").Range("A1")
'コピー元のブックを閉じる(セーブしない)
Workbooks("sample.xlsx").Close savechanges:=False
End Sub
最後に:ExcelとPythonで自動化は手軽になる
ここまで、Excelのボタンを押してPythonを実行する方法を解説していきました。
vbaとPythonを組み合わせることで、プログラミングがあまりわからない人でもPythonを動かすことができたり、自動化の幅が広がったりします。
普段Excelを触ることがある方は、この機会に自動化を極めてみてもいいかもしれませんね。
ということで、今回はこの辺で解説を終わりにしようと思います。
この記事が少しでも役に立っていたらうれしいです!
それでは!
最短1分でできる!
おすすめ記事:
>>【初心者でもできる!】PythonでWebスクレイピングする方法を徹底解説!【サンプルあり】
>>【料金別&徹底解説】 Pythonおすすめ勉強サイト8選【楽しく学ぼう】
>>【無料】Twitterの「いいね」を自動でする方法【注意:使用はしないでください】
参考にした動画:
コメント