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

4 セルで指定したシートを更新

5 複数シートを連続更新

6 Subプロシージャの定義と呼び出し

7 あるブックから別ブックを更新

8 他のブックをオープン・クローズ

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

10 確認メッセージの非表示

確認メッセージの非表示

 今回は、Excel VBA/マクロによって、既に存在するブックと同じファイル名で

 ブックを保存しようとしたときに自動的に表示される確認メッセージを非表示にします。


 それから、しばらく経ってから、『10_あるブックから別ブックを更新3.xlsm』の

 『更新』ボタンをクリックして、マクロ『他のブックから他のブックへ更新3』を実行してみました。


『10_あるブックから別ブックを更新3.xlsm』
Img10_3_40

 すると、

Img10_3_41

 『この場所に、’ C:\Excelマクロ\漢字学習帳\漢字問題集V10.xlsx’

 という名前のファイルが既にあります。置き換えますか?』

 と書いてあるメッセージが表示されました。

 これは、保存しようとしているファイルが既に存在するときに、

 自動的に表示される確認メッセージです。

 『E11』の『バージョン』が『V10』のままで、

 今回作成されるファイルの名前が『漢字問題集V10.xlsx』となり、

 前回マクロを実行したときに作成されたファイル名と全く同じ名前になったから、

 この確認メッセージが表示されました。

 Excelの確認メッセージを表示する必要が全くないときは、

 その確認メッセージを表示しないようにすることができます。

 Excelの確認メッセージを表示しないようにするには、

 『Application.DisplayAlerts』に『False (確認メッセージを表示しない)』を指定します。

Img10_3_42

 『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成するときに、

 Excelの確認メッセージを表示しないようにするには、

 『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成する

 コードの直前に、Excelの確認メッセージを表示しないためのコード

 『Application.DisplayAlerts = False』を記述します。

 Application.DisplayAlerts = False

 Workbooks(TBook).SaveAs (WPath)


 Excelの確認メッセージを表示しないようにするのは、

 『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成する

 コードを実行するときだけで良いので、

 『漢字学習帳テンプレート』ブックから『漢字問題集』ブックを新規作成する

 コードの直後に、Excelの確認メッセージを表示するためのコード

 『Application.DisplayAlerts = True』を記述します。

 Application.DisplayAlerts = True


 『漢字学習帳テンプレート』ブックから『漢字解答集』ブックを新規作成するときに、

 Excelの確認メッセージを表示しないようにするために、

 Application.DisplayAlerts = False

 Workbooks(TBook).SaveAs (WPath)

 再び、Excelの確認メッセージを表示するために、

 Application.DisplayAlerts = True

 とします。


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

 サブプロシージャ『他のブックから他のブックへ更新3』をコピーして、

 『他のブックから他のブックへ更新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

 これで、サブプロシージャ『他のブックから他のブックへ更新3ADF』の改修が完了しました。

 そこで、『更新』ボタンに、マクロ『他のブックから他のブックへ更新3ADF』をセットします。

『10_あるブックから別ブックを更新3.xlsm』
Img10_3_44

 それでは、『10_あるブックから別ブックを更新3.xlsm』以外の全てのExcelファイルを閉じた状態で、

 『更新』ボタンをクリックしてマクロ『他のブックから他のブックへ更新3 ADF』を実行してみましょう。


『漢字問題集V10.xlsx』
Img10_3_45
『漢字解答集V10.xlsx』
Img10_3_46

 Excelの確認メッセージが表示されずに、『漢字問題集』・『漢字解答集』ブックが上書きされました。