Pythonを使ってExcelの操作　PythonからExcelマクロを実行する

今回はPythonにpywin32ライブラリを入れてWindows上のPythonからExcelのマクロを実行させてみた。

**やったことは次の通り。**

###**(1) WindowsのPython環境にpywin32ライブラリをインストール**
###**(2) Excelマクロ有効ブック(xlsm)を用意する**
　　今回は事前に簡単なマクロを記載したExcelマクロ有効ブック(xlsm)を用意した。
　　マクロは次の通り。
　　　**①メッセージ付きのポップアップウインドウを開く**
　　　**②シートを追加してセルA1に文字を入力**

###**(3) Pythonで実行するExcel操作**
　　**①Excelアプリケーションを起動する**
　　**②Excelウインドウを表示する**
　　**③マクロ有効ブックを開く**
　　**④マクロを実行**
　　　**1.標準モジュールmodule1のtest1マクロを実行**
　　　　　　(ポップアップウインドウ)
　　　**2.標準モジュールmodule2のtest2マクロを実行**
　　　　　　(シートを追加してセルA1に文字を入力)
　　**⑤ファイルを保存してブックを閉じる**
　　**⑥Excelアプリケーションを終了する**

###**(4) Pythonコードを書く**
###**(5) Pythonを実行する**


**では実際にやってみる。詳細内容は下記の通り。**
---
###**■WindowsのPython環境にpywin32ライブラリをインストール**

コマンドプロンプトを開きインストールする。

```
>pip install pywin32
```

###**■Excelマクロが有効なブックを事前に作成しておく**

【ファイル名】　excel03.xlsm

![icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/04453bfa-48e2-f4db-77c8-33a006dcafe5.png)

###**■Excelマクロを事前に作成しておく**

標準モジュールの配下にモジュールを追加してそれぞれマクロを作成する。

**①Module1  test1マクロ(ポップアップウインドウを表示)**
![module1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/95b1deea-2034-f79a-8922-989bd9c17728.png)

**②Module2  test2マクロ(シートを追加してセルA1に文字列Testを入力)**
![module2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/947fe766-feec-969a-fbb4-7ffec7483568.png)

###**■Pythonコードを書く**

【ファイル名】　excel03.py

```
import win32com.client                                          #Win32comモジュールを呼び出す

excelapp = win32com.client.Dispatch('Excel.Application')        #Excelアプリケーションを起動する
excelapp.Visible = 1                                                                                       #Excelウインドウを表示する
excelapp.Workbooks.Open(r"C:\Users\ishimatsu\Desktop\excel03.xlsm")  #rを追加してパス名をrawデータとして読み込みマクロ有効ブックを開く
excelapp.Application.Run('Module1.test1')                       #標準モジュールModule1のマクロtest1を実行する
excelapp.Application.Run('Module2.test2')                       #標準モジュールModule2のマクロtest2を実行する
excelapp.Workbooks(1).Close(SaveChanges=1)                      #ファイルを保存してブックを閉じる
excelapp.Application.Quit()                                     #Excelを閉じる
```

###**■Pythonを実行**

```
>python excel03.py
```

###**■実行結果**

**(1)Excelが起動してポップアップウインドウが表示された**
![result1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/095da6ff-fb33-ea82-545a-97b049fa82fa.png)



OKボタンを押すとブックが閉じるプログラムなので、再度Excelを起動してBookを開く。

**(2) シートが追加され、A1に文字列Testが入力された**
![result2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/7f3673e8-4400-46cc-1a13-65f534494f68.png)




実際にPythonでやってみたかったExcelマクロの操作ができている。


**前の記事　**
[Pythonを使ったExcelの操作 　PythonでExcelの表を編集する](https://qiita.com/Nao_Ishimatsu/items/474414be91521e85f4d6)

<table border="0" cellpadding="0" cellspacing="0"><tr><td><div style="border:1px solid #95a5a6;border-radius:.75rem;background-color:#FFFFFF;width:504px;margin:0px;padding:5px;text-align:center;overflow:hidden;"><table><tr><td style="width:240px"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/14fd8852.00a017ee.14fd8853.823bacf4/?me_id=1213310&item_id=20185382&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F3669%2F9784798063669.jpg%3F_ex%3D240x240&s=240x240&t=picttext" border="0" style="margin:2px" alt="" title=""></a></td><td style="vertical-align:top;width:248px;"><p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px;word-wrap:break-word"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >Pythonプログラミング逆引き大全 400の極意 [ 金城俊哉 ]</a></p><div style="margin:10px;"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://static.affiliate.rakuten.co.jp/makelink/rl.svg" style="float:left;max-height:27px;width:auto;margin-top:0"></a><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ==" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><div style="float:right;width:41%;height:27px;background-color:#bf0000;color:#fff!important;font-size:12px;font-weight:500;line-height:27px;margin-left:1px;padding: 0 12px;border-radius:16px;cursor:pointer;text-align:center;">楽天で購入</div></a></div></td></tr></table></div><br><p style="color:#000000;font-size:12px;line-height:1.4em;margin:5px;word-wrap:break-word"></p></td></tr></table>