【他のレンジ/シート/ブックを更新する】
1 他のレンジを更新
2 他のシートを更新
3 逆Z式並びで更新
4 複数シートを更新
5 他のブックを更新
6 他のブックをオープン・クローズ
7 新規ブックを作成し更新
今回は、Excel VBA/マクロによって、
テンプレートブックから出力ブックとして新規ブックを作成し、
入力ブックからデータを読みとり、出力ブックへデータを書きこみ、
入力ブックをセーブせずクローズ、出力ブックをセーブしてクローズする
マクロをつくってみます。
テンプレートブックから出力ブックとして新規ブックを作成した後、
入力ブックと出力ブックの間でデータを読み書きすることになるため、
今回も、そのマクロの実行用ブックを作成してみます。
入力ブック・テンプレートブック・出力ブック・マクロ実行用ブックの関連図は
次のようになります。
【『他のブックから他のブックへ更新マクロ3』】
前回と同様に、『漢字入力帳.xlsx』を『C:\Excelマクロ\漢字入力帳』に保存しておきます。
今回は『漢字問題集.xlsx』・『漢字解答集.xlsx』を作成するときに、そのコピー元として
テンプレートブック『漢字学習帳テンプレート.xlsx』を利用します。
テンプレートブックとは、新規のExcelファイルを複製して作成するときに
複製元となるExcelファイルのことです。
セルの書式設定・ページレイアウト・数式等のフォームが定型のExcelファイルを繰り返し
何回も複製して作成するときは、予め複製元となる定型Excelファイルを一つ作成しておけば、
複製後のExcelファイルを一つ一つフォーム編集する必要がなくなりとても便利です。
そこで、前回使用した『漢字問題集.xlsx』のデータをクリアした後、リネームして
『漢字学習帳テンプレート.xlsx』としますが、今回はそのブックをマクロでオープンする
ことになるので、予めブックの保存先を決めておきます。
パソコンのCドライブの直下のExcelマクロというフォルダの中に、漢字テンプレートというフォルダを
作成しておきます。
その漢字テンプレートというフォルダの中に『漢字学習帳テンプレート.xlsx』を保存しておきます。
前回と同様、『漢字問題集.xlsx』・『漢字解答集.xlsx』の保存先は、パソコンのCドライブの直下の
Excelマクロフォルダの中の漢字学習帳フォルダとします。
今回は、『C:\Excelマクロ\漢字学習帳』フォルダの中は空にします。
『漢字学習帳テンプレート』ブックから『漢字問題集』・『漢字解答集』ブックを新規作成し、
『漢字入力帳』ブックからデータを読みとり、『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、
『漢字入力帳』ブックをセーブせずクローズ、『漢字問題集』・『漢字解答集』ブックをセーブしてクローズする
プログラムを実行するための特別なワークブックを作成します。
前回使用したExcelマクロ有効ブックをコピーして、次の画像のような
Excelマクロ有効ブック『10_他のブックを更新3.xlsm』を作成します。
今回は、『漢字入力帳』・『漢字学習帳テンプレート』・『漢字問題集』・『漢字解答集』ブックを、
マクロでオープン・クローズすることになるため、
それらの保存先のパス、もしくは、フルパスを指定することになります。
『漢字入力帳』ブックの保存先フォルダとして『C5』に『C:\Excelマクロ\漢字入力帳』を、
保存先ファイルとして『D5』に『漢字入力帳.xlsx』を記入します。
『漢字学習帳テンプレート』ブックの保存先フォルダとして『C8』に『C:\Excelマクロ\漢字テンプレート』を、
保存先ファイルとして『D8』に『漢字学習帳テンプレート.xlsx』を記入します。
『漢字問題集』ブックの保存先フォルダとして『C11』に『C:\Excelマクロ\漢字学習帳』を、
保存先ファイルとして『D11』に『漢字問題集.xlsx』を記入します。
『漢字解答集』ブックの保存先フォルダとして『C12』に『C:\Excelマクロ\漢字学習帳』を、
保存先ファイルとして『D12』に『漢字解答集.xlsx』を記入します。
『漢字問題集』・『漢字解答集』ブックのバージョンとして『E11』に『V10』を記入します。
それでは、『漢字学習帳テンプレート』ブックから『漢字問題集』・『漢字解答集』ブックを新規作成し、
『漢字入力帳』ブックからデータを読みとり、『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、
『漢字入力帳』ブックをセーブせずクローズ、『漢字問題集』・『漢字解答集』ブックをセーブしてクローズする
プログラムを作成しましょう。
宣言部を改修します。
学習帳テンプレートの抽出行_変換実行シート
『GSTplFil読取行_Cnv』に『8』を設定して定数宣言
Public Const GSTplFil読取行_Cnv = 8
問題集ファイルの抽出行_変換実行シート
『MDFil読取行_Cnv』に『11』を設定して定数宣言
Public Const MDFil読取行_Cnv = 11
解答集ファイルの抽出行_変換実行シート
『KTFil読取行_Cnv』に『12』を設定して定数宣言
Public Const KTFil読取行_Cnv = 12
バージョンレンジ_変換実行シート
『VersionRng_Cnv』に『E11』を設定して定数宣言
Public Const VersionRng_Cnv = "E11"
テンプレートフォルダ『TFolder』を文字列型として変数宣言
Public TFolder As String
テンプレートワークブック『TBook』を文字列型として変数宣言
Public TBook As String
テンプレートファイルフルパス『TPath』を文字列型として変数宣言
Public TPath As String
【『10_他のブックを更新3.xlsm』_ 宣言部】
処理部を改修します。
『10_他のブックを更新3.xlsm』のマクロでは、『漢字学習帳テンプレート』ブックから
『漢字問題集』・『漢字解答集』ブックを新規作成し、『漢字入力帳』ブックからデータを読みとり、
『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、『漢字入力帳』ブックをセーブせずクローズ、
『漢字問題集』・『漢字解答集』ブックをセーブしてクローズします。
テンプレートブックを元に新規ブックを作成するときは、『Workbooks( ).SaveAs ( )』メソッドを使用します。
『漢字学習帳テンプレート.xlsx』を『C:\Excelマクロ\漢字学習帳\漢字問題集.xlsx』として保存するときは、
『Workbooks( ).SaveAs ( )』メソッドに、ブック名に『漢字学習帳テンプレート.xlsx』、
フルパスに『C:\Excelマクロ\漢字学習帳\漢字問題集.xlsx』を指定して、
Workbooks(“漢字学習帳テンプレート.xlsx”).SaveAs _
(“C:\Excelマクロ\漢字学習帳\漢字問題集.xlsx”)
『漢字学習帳テンプレート.xlsx』を『C:\Excelマクロ\漢字学習帳\漢字解答集.xlsx』として保存するときは、
『Workbooks( ).SaveAs ( )』メソッドに、ブック名に『漢字学習帳テンプレート.xlsx』、
フルパスに『C:\Excelマクロ\漢字学習帳\漢字解答集.xlsx』を指定して、
Workbooks(“漢字学習帳テンプレート.xlsx”).SaveAs _
(“C:\Excelマクロ\漢字学習帳\漢字解答集.xlsx”) とします。
では、処理部を改修しましょう。 漢字学習帳テンプレートフォルダ名・ワークブック名・フルパス名の取得 TFolder = Workbooks(ThisBook).Worksheets(ConvertSheet) _ .Cells(GSTplFil読取行_Cnv, FolderNmCm_Cnv).Value TBook = Workbooks(ThisBook).Worksheets(ConvertSheet) _ .Cells(GSTplFil読取行_Cnv, BookNmCm_Cnv).Value TPath = TFolder & "\" & TBook 書込ファイルバージョン名の取得 WVrs = Workbooks(ThisBook).Worksheets(ConvertSheet) _ .Range(VersionRng_Cnv).Value 漢字学習帳テンプレートブックを開く Workbooks.Open (TPath) 漢字問題集フォルダ名・ワークブック名・フルパス名の取得 WFolder = Workbooks(ThisBook).Worksheets(ConvertSheet) _ .Cells(MDFil読取行_Cnv, FolderNmCm_Cnv).Value WBookMD = Workbooks(ThisBook).Worksheets(ConvertSheet) _ .Cells(MDFil読取行_Cnv, BookNmCm_Cnv).Value _ & WVrs & ".xlsx" WPathMD = WFolder & "\" & WBookMD 漢字問題集ブック(新規ブック)の作成 Workbooks(TBook).SaveAs (WPathMD) 漢字問題集ブックのワークシート名をリネーム Workbooks(WBookMD).Worksheets(1).Name = WSheetMD 漢字学習帳テンプレートブックを開く Workbooks.Open (TPath) 漢字解答集フォルダ名・ワークブック名・フルパス名の取得 WFolder = Workbooks(ThisBook).Worksheets(ConvertSheet) _ .Cells(KTFil読取行_Cnv, FolderNmCm_Cnv).Value WBookKT = Workbooks(ThisBook).Worksheets(ConvertSheet) _ .Cells(KTFil読取行_Cnv, BookNmCm_Cnv).Value _ & WVrs & ".xlsx" WPathKT = WFolder & "\" & WBookKT 漢字解答集ブック(新規ブック)の作成 Workbooks(TBook).SaveAs (WPathKT) 漢字解答集ブックのワークシート名をリネーム Workbooks(WBookKT).Worksheets(1).Name = WSheetKT とします。
【サブプロシージャ『他のブックから他のブックへ更新3』】 サブプロシージャ『他のブックから他のブックへ更新2』は、『他のブックから他のブックへ更新3』に 名称を変更しておきます。
【サブプロシージャ『ワークシート更新』】 これで、Excelマクロ有効ブック『10_他のブックを更新3.xlsm』のプログラムが完了しました。 そこで、『更新』ボタンに、マクロ『他のブックから他のブックへ更新3』をセットします。
それでは、『漢字入力帳.xlsx』・『漢字学習帳テンプレート.xlsx』を閉じた状態で、 『更新』ボタンをクリックしてマクロ『他のブックから他のブックへ更新3』を 実行してみましょう。
【漢字学習帳フォルダ】 『漢字学習帳』フォルダの中に、『漢字問題集V10.xlsx』・『漢字解答集V10.xlsx』が作成されています。
『漢字問題集V10.xlsx』と『漢字解答集V10.xlsx』を開いてください。
『漢字入力帳』ブックからデータが読みとられ、 『漢字問題集』・『漢字解答集』ブックへデータが書きこまれました。
それから、しばらく経ってから、『10_他のブックを更新3.xlsm』の 『更新』ボタンをクリックして、マクロ『他のブックから他のブックへ更新3』を実行してみました。 すると、 『この場所に、’ C:\Excelマクロ\漢字学習帳\漢字問題集V10.xlsx’ という名前のファイルが既にあります。置き換えますか?』
と書いてあるメッセージが表示されました。 これは、保存しようとしているファイルが既に存在するときに、 自動的に表示される確認メッセージです。
『E11』の『バージョン』が『V10』のままで、 今回作成されるファイルの名前が『漢字問題集V10.xlsx』となり、 前回マクロを実行したときに作成されたファイル名と全く同じ名前になったから、 この確認メッセージが表示されました。 Excelの確認メッセージを表示する必要が全くないときは、 その確認メッセージを表示しないようにすることができます。
Excelの確認メッセージを表示しないようにするには、 『Application.DisplayAlerts』に『False (確認メッセージを表示しない)』を指定します。
『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成するときに、 Excelの確認メッセージを表示しないようにするには、 『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成する コードの直前に、Excelの確認メッセージを表示しないためのコード 『Application.DisplayAlerts = False』を記述します。 Application.DisplayAlerts = False Workbooks(TBook).SaveAs (WPathMD) Excelの確認メッセージを表示しないようにするのは、 『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成する コードを実行するときだけで良いので、 『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成する コードの直後に、Excelの確認メッセージを表示するためのコード 『Application.DisplayAlerts = True』を記述します。 Application.DisplayAlerts = True 『漢字学習帳テンプレート』ブックから『漢字解答集』ブックを新規作成するときに、 Excelの確認メッセージを表示しないようにするために、 Application.DisplayAlerts = False Workbooks(TBook).SaveAs (WPathKT) 再び、Excelの確認メッセージを表示するために、 Application.DisplayAlerts = True とします。 サブプロシージャ『他のブックから他のブックへ更新3』をコピーして、 『他のブックから他のブックへ更新3 ADF』に名称を変更した後、先ほどの改修をします。
【サブプロシージャ『他のブックから他のブックへ更新3ADF』】 これで、サブプロシージャ『他のブックから他のブックへ更新3ADF』の改修が完了しました。 そこで、『更新』ボタンに、マクロ『他のブックから他のブックへ更新3ADF』をセットします。
それでは、『10_他のブックを更新3.xlsm』以外の全てのExcelファイルを閉じた状態で、 『更新』ボタンをクリックしてマクロ『他のブックから他のブックへ更新3 ADF』を実行してみましょう。
Excelの確認メッセージが表示されずに、『漢字問題集』・『漢字解答集』ブックが上書きされました。
3. 確認メッセージの非表示
2023-03-19
2021-12-20
2021-12-12