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

1 他のレンジを更新

2 他のシートを更新

3 逆Z式並びで更新

4 複数シートを更新

5 他のブックを更新

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

7 新規ブックを作成し更新

新規ブックを作成し更新

 今回は、Excel VBA/マクロによって、

 テンプレートブックから出力ブックとして新規ブックを作成し、

 入力ブックからデータを読みとり、出力ブックへデータを書きこみ、

 入力ブックをセーブせずクローズ、出力ブックをセーブしてクローズする

 マクロをつくってみます。

 テンプレートブックから出力ブックとして新規ブックを作成した後、

 入力ブックと出力ブックの間でデータを読み書きすることになるため、

 今回も、そのマクロの実行用ブックを作成してみます。

 入力ブック・テンプレートブック・出力ブック・マクロ実行用ブックの関連図は

 次のようになります。


 【『他のブックから他のブックへ更新マクロ3』】

Img10_3_10


1. テンプレートを作成

 前回と同様に、『漢字入力帳.xlsx』を『C:\Excelマクロ\漢字入力帳』に保存しておきます。

 今回は『漢字問題集.xlsx』・『漢字解答集.xlsx』を作成するときに、そのコピー元として

 テンプレートブック『漢字学習帳テンプレート.xlsx』を利用します。

 テンプレートブックとは、新規のExcelファイルを複製して作成するときに

 複製元となるExcelファイルのことです。

 セルの書式設定・ページレイアウト・数式等のフォームが定型のExcelファイルを繰り返し

 何回も複製して作成するときは、予め複製元となる定型Excelファイルを一つ作成しておけば、

 複製後のExcelファイルを一つ一つフォーム編集する必要がなくなりとても便利です。

 そこで、前回使用した『漢字問題集.xlsx』のデータをクリアした後、リネームして

 『漢字学習帳テンプレート.xlsx』としますが、今回はそのブックをマクロでオープンする

 ことになるので、予めブックの保存先を決めておきます。

Img10_3_11

 パソコンのCドライブの直下のExcelマクロというフォルダの中に、漢字テンプレートというフォルダを

 作成しておきます。

Img10_3_12

 その漢字テンプレートというフォルダの中に『漢字学習帳テンプレート.xlsx』を保存しておきます。

『漢字学習帳テンプレート.xlsx』
Img10_3_13

 前回と同様、『漢字問題集.xlsx』・『漢字解答集.xlsx』の保存先は、パソコンのCドライブの直下の

 Excelマクロフォルダの中の漢字学習帳フォルダとします。

Img10_3_14


 今回は、『C:\Excelマクロ\漢字学習帳』フォルダの中は空にします。

Img10_3_15


 『漢字学習帳テンプレート』ブックから『漢字問題集』・『漢字解答集』ブックを新規作成し、

 『漢字入力帳』ブックからデータを読みとり、『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、

 『漢字入力帳』ブックをセーブせずクローズ、『漢字問題集』・『漢字解答集』ブックをセーブしてクローズする

 プログラムを実行するための特別なワークブックを作成します。

 前回使用したExcelマクロ有効ブックをコピーして、次の画像のような

 Excelマクロ有効ブック『10_他のブックを更新3.xlsm』を作成します。


『10_他のブックを更新3.xlsm』
Img10_3_16

 今回は、『漢字入力帳』・『漢字学習帳テンプレート』・『漢字問題集』・『漢字解答集』ブックを、

 マクロでオープン・クローズすることになるため、

 それらの保存先のパス、もしくは、フルパスを指定することになります。

 『漢字入力帳』ブックの保存先フォルダとして『C5』に『C:\Excelマクロ\漢字入力帳』を、

 保存先ファイルとして『D5』に『漢字入力帳.xlsx』を記入します。

 『漢字学習帳テンプレート』ブックの保存先フォルダとして『C8』に『C:\Excelマクロ\漢字テンプレート』を、

 保存先ファイルとして『D8』に『漢字学習帳テンプレート.xlsx』を記入します。

 『漢字問題集』ブックの保存先フォルダとして『C11』に『C:\Excelマクロ\漢字学習帳』を、

 保存先ファイルとして『D11』に『漢字問題集.xlsx』を記入します。

 『漢字解答集』ブックの保存先フォルダとして『C12』に『C:\Excelマクロ\漢字学習帳』を、

 保存先ファイルとして『D12』に『漢字解答集.xlsx』を記入します。

 『漢字問題集』・『漢字解答集』ブックのバージョンとして『E11』に『V10』を記入します。



2. テンプレートから新規ブックを作成し更新

 それでは、『漢字学習帳テンプレート』ブックから『漢字問題集』・『漢字解答集』ブックを新規作成し、

 『漢字入力帳』ブックからデータを読みとり、『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、

 『漢字入力帳』ブックをセーブせずクローズ、『漢字問題集』・『漢字解答集』ブックをセーブしてクローズする

 プログラムを作成しましょう。


 宣言部を改修します。

 学習帳テンプレートの抽出行_変換実行シート

 『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』_ 宣言部】

Img10_3_21

 処理部を改修します。

 『10_他のブックを更新3.xlsm』のマクロでは、『漢字学習帳テンプレート』ブックから

 『漢字問題集』・『漢字解答集』ブックを新規作成し、『漢字入力帳』ブックからデータを読みとり、

 『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、『漢字入力帳』ブックをセーブせずクローズ、

 『漢字問題集』・『漢字解答集』ブックをセーブしてクローズします。

 テンプレートブックを元に新規ブックを作成するときは、『Workbooks( ).SaveAs ( )』メソッドを使用します。

Img10_3_22


 『漢字学習帳テンプレート.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』】

Img10_3_23

 サブプロシージャ『他のブックから他のブックへ更新2』は、『他のブックから他のブックへ更新3』に

 名称を変更しておきます。

 【サブプロシージャ『ワークシート更新』】

Img10_3_24

 これで、Excelマクロ有効ブック『10_他のブックを更新3.xlsm』のプログラムが完了しました。

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


『10_他のブックを更新3.xlsm』
Img10_3_30

 それでは、『漢字入力帳.xlsx』・『漢字学習帳テンプレート.xlsx』を閉じた状態で、

 『更新』ボタンをクリックしてマクロ『他のブックから他のブックへ更新3』を

 実行してみましょう。

 【漢字学習帳フォルダ】

Img10_3_31

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

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


『漢字問題集V10.xlsx』
Img10_3_32
『漢字解答集V10.xlsx』
Img10_3_33

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

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



3. 確認メッセージの非表示

 それから、しばらく経ってから、『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 (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』】

Img10_3_43

 これで、サブプロシージャ『他のブックから他のブックへ更新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の確認メッセージが表示されずに、『漢字問題集』・『漢字解答集』ブックが上書きされました。




目 次

1. セルに文字を書きこむ
セルに文字を書きこむ

2. RangeとCellsでセルの位置を指定する
RangeとCellsでセルの位置を指定する

3. ループ処理でセルに値を書きこむ
ループ処理でセルに値を書きこむ

4. ループ処理でセルの値を読みとる
ループ処理でセルの値を読みとる

5. ループ処理でセルからセルへ値を代入する
ループ処理でセルからセルへ値を代入する

6. 条件分岐処理でセルの操作を分ける
条件分岐処理でセルの操作を分ける

7. 関数・プロパティ設定をつかう
関数・プロパティ設定をつかう

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


YouTube

Excelマクロの実用版とデモ版


ブログ