【他のレンジ/シート/ブックを更新する】
7 Pythonの汎用型プログラム構成
8 定数で指定したブックを更新
9 セルで指定したブックを更新
10 Excel_VBA/マクロからPythonを実行しブックを更新
11 フルパスを指定したブックを更新
12 テンプレートから出力ブックを作成し更新
13 PythonからExcel_VBA/マクロを実行しブックを更新
PythonからExcel_VBA/マクロを実行しブックを更新
今回は、Python-xlwingsからExcel_VBA/マクロを呼び出し実行し、
入力ブックからデータを読みとり出力ブックへデータを書きこんでみます。
Pythonプログラム・Excel_VBA/マクロ実行用ブック・入力ブック・出力ブックの関連図は次のようになります。
前回までは、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』】
【サブプロシージャ『他のブックから他のブックへ更新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 の構文は次の通りです。
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()
それでは、『Python_Macro.py』を実行してみます。
右向き三角形ボタンをクリックします。
【漢字学習帳フォルダ】
『漢字学習帳』フォルダの中に、『漢字問題集V10.xlsx』・『漢字解答集V10.xlsx』が作成されています。
『漢字問題集V10.xlsx』と『漢字解答集V10.xlsx』を開いてください。
『漢字入力帳』ブックからデータが読みとられ、
『漢字問題集』・『漢字解答集』ブックへデータが書きこまれました。