【他のレンジ/シート/ブックを更新する】

7 Pythonの汎用型プログラム構成

8 定数で指定したブックを更新

9 セルで指定したブックを更新

10 Excel_VBA/マクロからPythonを実行しブックを更新

11 フルパスを指定したブックを更新

12 テンプレートから出力ブックを作成し更新

13 PythonからExcel_VBA/マクロを実行しブックを更新

PythonからExcel_VBA/マクロを実行しブックを更新

 今回は、Python-xlwingsからExcel_VBA/マクロを呼び出し実行し、
 入力ブックからデータを読みとり出力ブックへデータを書きこんでみます。


 Pythonプログラム・Excel_VBA/マクロ実行用ブック・入力ブック・出力ブックの関連図は次のようになります。

Img10_6_01

 前回までは、Excel_VBA/マクロからPython-xlwingsを呼び出し実行することにより、

 『漢字入力帳.xlsx』からデータを読みとり、『漢字問題集.xlsx』、及び、『漢字解答集.xlsx』へ

 連続してデータを書きこみましたが、

 今回は、Python-xlwingsからExcel_VBA/マクロを呼び出し実行することにより、

 『漢字入力帳.xlsx』からデータを読みとり、『漢字問題集.xlsx』、及び、『漢字解答集.xlsx』へ

 連続してデータを書きこみます。



 今回は、ツインサイト『Excelマクロガイド(セル操作)_ブック保存時の確認メッセージの非表示』でつくった

 Excelマクロ有効ブック『10_他のブックを更新3.xlsm』の

 サブプロシージャ『他のブックから他のブックへ更新3ADF』を

 Python-xlwingsから呼び出し実行します。


 【Excelマクロ有効ブック『10_他のブックを更新3.xlsm』】

Img10_6_02

 【サブプロシージャ『他のブックから他のブックへ更新3ADF』】

Sub 他のブックから他のブックへ更新3ADF()


 ThisBook = ActiveWorkbook.Name

 Cst = ActiveSheet.Name


 EFolder = Workbooks(ThisBook).Worksheets(Cst).Range(入力帳フォルダセル_Cst).Value

 EBook = Workbooks(ThisBook).Worksheets(Cst).Range(入力帳ファイルセル_Cst).Value

 EPath = EFolder & "\" & EBook

 Workbooks.Open (EPath)


 TFolder = Workbooks(ThisBook).Worksheets(Cst).Range(テンプレートフォルダセル_Cst).Value

 TBook = Workbooks(ThisBook).Worksheets(Cst).Range(テンプレートフォルダセル_Cst).Value

 TPath = TFolder & "\" & TBook


 Vsn = Workbooks(ThisBook).Worksheets(Cst).Range(バージョンセル_Cst).Value


 Workbooks.Open (TPath)


 WFolderMD = Workbooks(ThisBook).Worksheets(Cst).Range(問題集フォルダセル_Cst).Value

 WBookMD = Workbooks(ThisBook).Worksheets(Cst).Range(問題集ファイルセル_Cst).Value _

 & Vsn & ".xlsx"

 WPath = WFolderMD & "\" & WBookMD


 Application.DisplayAlerts = False

 Workbooks(TBook).SaveAs (WPath)

 Application.DisplayAlerts = True

 Workbooks(WBookMD).Worksheets(1).Name = WSheetMD


 Workbooks.Open (TPath)


 WFolderKT = Workbooks(ThisBook).Worksheets(Cst).Range(解答集フォルダセル_Cst).Value

 WBookKT = Workbooks(ThisBook).Worksheets(Cst).Range(解答集ファイルセル_Cst).Value _

 & Vsn & ".xlsx"

 WPath = WFolderKT & "\" & WBookKT


 Application.DisplayAlerts = False

 Workbooks(TBook).SaveAs (WPath)

 Application.DisplayAlerts = True

 Workbooks(WBookMD).Worksheets(1).Name = WSheetKT


 '◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 漢字問題集 ◆◆◆◆◆◆◆◆◆◆◆◆◆◆

 WBook = WBookMD

 Wst = WSheetMD

 Call = ワークシート更新


 '◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 漢字解答集 ◆◆◆◆◆◆◆◆◆◆◆◆◆◆

 WBook = WBookKT

 Wst = WSheetKT

 Call = ワークシート更新


 Workbooks(WBookMD).Close SaveChanges:=True

 Workbooks(WBookKT).Close SaveChanges:=True

 Workbooks(EBook).Close SaveChanges:=False


End Sub



 Python-xlwingsからExcel_VBA/マクロを呼び出し実行するPython の構文は次の通りです。

Img10_6_03

 Excelマクロ有効ブック『10_他のブックを更新3.xlsm』の

 サブプロシージャ『他のブックから他のブックへ更新3ADF』を

 Python-xlwingsから呼び出し実行するPythonファイルは次のようになります。

 【Pythonファイル】

# Python_Macro.py

import xlwings as xw

xlsm_path='./10_他のブックを更新3.xlsm'

macro_name='他のブックから他のブックへ更新3ADF'

app = xw.App()

wb = app.books.open(xlsm_path)

mcr = wb.macro(macro_name)

mcr ()

wb.save(xlsm_path)

wb.close()

app.quit()


Img10_6_04

 それでは、『Python_Macro.py』を実行してみます。

 右向き三角形ボタンをクリックします。


 【漢字学習帳フォルダ】

Img10_6_05

 『漢字学習帳』フォルダの中に、『漢字問題集V10.xlsx』・『漢字解答集V10.xlsx』が作成されています。

 『漢字問題集V10.xlsx』と『漢字解答集V10.xlsx』を開いてください。


『漢字問題集V10.xlsx』
Img10_6_06
『漢字解答集V10.xlsx』
Img10_6_07

 『漢字入力帳』ブックからデータが読みとられ、

 『漢字問題集』・『漢字解答集』ブックへデータが書きこまれました。