Python

【徹底解説!】ExcelのボタンからPythonを実行する方法【画像あり】

【徹底解説!】ExcelのボタンからPythonを実行する方法【画像あり】

こんにちは、さすを(@sasuwo0409)です。

いきなりですが、

ExcelのボタンからPythonを実行したい!

と思ってはいませんか?

今回の記事は、ExcelのボタンからPythonを実行する方法を解説していきます。

この記事を読めば、Excelのボタンを押すだけで簡単にPythonプログラムを動かせるようになります。

それでは本文をどうぞ。

困っている人
困っている人

Excelのボタンを押してPythonを動かしたいんだけど、やり方がわからないな。

あと、Excelのボタンがあるシートにデータを反映させたいんだけどどうすればいいのかも知りたいな。

さすを
さすを

これらの悩みを解決します!

この記事を読むとわかること:

  • Excelのボタンを押してPythonを動かす方法
  • Excelのボタンと同じシートにデータ(画像)を追加する方法

筆者の情報:

  • 現役システムエンジニア 兼 ブロガー
  • 過去に6,000万のPython案件を受注
  • 最近ハマっていることは機械学習

※お金がかかってもいいから、少しでも早くPythonスキルを身につけたい方は、TechAcademy(テックアカデミー)のPythonコースがおすすめです。
エンジニアになれば、受講料は1か月もあれば回収できるので、問題なしです。
本気でPythonスキルを身につけたい方は、スクールで一気にスキルを身に着けるのもありでしょう。

>>TechAcademy(テックアカデミー)のPythonコースはこちら

スポンサーリンク

ExcelのボタンからPythonを実行する方法

ExcelのボタンからPythonを実行する方法

まず初めに、今回実施した開発環境はこちらです。

開発環境:

  • OS:Windows10
  • CPU:Intel(R) Core(TM) i5-4200M
  • PC:NEC
  • python:ver3.9.0
  • Excel:2013

それではここから、ExcelのボタンからPythonを実行する方法を解説していきます。

ExcelのボタンからPythonを実行する方法は以下の4ステップです。

  1. フォルダ・ファイルを作成する
  2. ライブラリ・モジュールをインストールする
  3. Pythonでプログラムを書く
  4. Excelでvbaを書く

なお、今回のPythonプログラムは「フォルダ内の画像をExcelシートに張り付ける」というものです。したがって、Excelのボタンを押すとPythonプログラムが実行され、画像がExcelシートに張り付けられるという流れになります。

補足:
ここからは、Pythonの環境が整っていることを前提に話を進めています。Pythonの環境が整っていない方は「【初心者向け】Python学習の始め方【現役エンジニアがわかりやすく解説】」の記事で環境を整えてからお読みください。

その①:フォルダ・ファイルを作成する

今回は、デスクトップ上に新規フォルダ「Python」を作成し、その中に画像を入れたimgフォルダやExcelファイル、プログラムを作成しています。

Python
  -----img
  -----excel_execution.py(Pyファイル)
  -----button_python.xlsm(vbaを書くシート)
  -----sample.xlsx(画像が張り付けられるExcelシート)

フォルダ構成を変更しても問題ありませんが、後述するプログラムの保存先フォルダ名が変わるので注意してください。

なお、張り付ける画像は事前に準備し、imgフォルダに格納しておく必要があります。まだ準備できていない場合は「【コピペOKです】Pythonを使って自動でGoogle画像を収集する方法を徹底解説!」の記事が参考になると思います。

その②:ライブラリ・モジュールをインストールする

この処理を実行するために必要なライブラリ、モジュールは以下の2つです。

必要なライブラリ、モジュール

  1. Pillow:Pythonの画像処理ライブラリ
  2. openpyxl:Excelの読み書きをPythonで行うためのモジュール
さすを
さすを

すでにインストール済みの方は飛ばしてください!

まず初めにターミナルを開きます。検索窓に「ターミナル」と入力します。

図1:ライブラリ・モジュールのインストール手順①
図1:ライブラリ・モジュールのインストール手順①

ターミナルが開いたら、ライブラリ・モジュールをインストールします。今回は作成したフォルダの直下にインストールしていきます。

図2:ライブラリ・モジュールのインストール手順②
図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

補足:

  • 1行目はデフォルトの状態(変更しない)でOKです。
  • 8行目の「”\excel_execution.py”」は、作成したPyファイルの名前に変更してください( 「\」は必要です)。

実行結果:

図3:実行結果①
図3:実行結果①

作成したボタンを押すと、「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

補足:

  • Sub excel_paste():Pythonで画像を挿入したExcelファイルのデータをコピーし、vbaの書いてあるファイルに張り付けるプログラムです。
  • 14行目:作成した「excel_paste」プログラムを呼んでいます。
  • 33行目:Range(“A1:K60”):コピーしたいセルの範囲を入力してください。
図4:実行結果②
図4:実行結果②
図5:実行結果③
図5:実行結果③

最後に:ExcelとPythonで自動化は手軽になる

ここまで、Excelのボタンを押してPythonを実行する方法を解説していきました。

vbaとPythonを組み合わせることで、プログラミングがあまりわからない人でもPythonを動かすことができたり、自動化の幅が広がったりします。

普段Excelを触ることがある方は、この機会に自動化を極めてみてもいいかもしれませんね。

ということで、今回はこの辺で解説を終わりにしようと思います。

この記事が少しでも役に立っていたらうれしいです!

それでは!


コメント

タイトルとURLをコピーしました