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

1 他のレンジを更新

2 他のシートを更新

3 逆Z式並びで更新

4 複数シートを更新

5 他のブックを更新

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

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

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

 今回は、Excel VBAによって、

 入力ブック及び出力ブックをオープンして、入力ブックからデータを読みとり、

 出力ブックへデータを書きこみ、入力ブックをセーブせずクローズ

 出力ブックをセーブしてクローズするマクロをつくってみます。

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

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

 入力ブック・出力ブック・マクロ実行用ブックの関連図は次のようになります。


 【『他のブックから他のブックへ更新マクロ2』実行

Img10_2_01

 【『他のブックから他のブックへ更新マクロ2』実行

Img10_2_02


1. ブックのフルパスを指定

 最初に、10問の漢字文字列を用意した『漢字入力帳.xlsx』を作成しますが、

 今回はそのブックをマクロでオープンすることになるので、予めブックの保存先を決めておきます。

Img10_2_11

 パソコンのCドライブの直下にExcelマクロというフォルダを作成し、更にその中に漢字入力帳という

 フォルダを作成しておきます。

Img10_2_12

 その漢字入力帳というフォルダの中に『漢字入力帳.xlsx』を保存しておきます。

 続けて、白紙の『漢字問題集.xlsx』・『漢字解答集.xlsx』を作成しますが、

 今回はそれらのブックをマクロでオープンすることになるので、予めブックの保存先を決めておきます。

Img10_2_13

 パソコンのCドライブの直下のExcelマクロというフォルダの中に、漢字学習帳というフォルダを

 作成しておきます。

Img10_2_14

 その漢字学習帳というフォルダの中に白紙の『漢字問題集.xlsx』・『漢字解答集.xlsx』を保存しておきます。


 『漢字入力帳』・『漢字問題集』・『漢字解答集』ブックをオープンして、

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

 『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、

 『漢字入力帳』ブックをセーブせずクローズ

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

 マクロを実行するためのワークブックを作成します。

 前回使用したExcelマクロ有効ブックをコピーして、

 次の画像のようなExcelマクロ有効ブック『10_他のブックを更新2.xlsm』を作成します。


『10_他のブックを更新2.xlsm』
Img10_2_20

 今回は、『漢字入力帳』・『漢字問題集』・『漢字解答集』ブックを、マクロでオープン・クローズする

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

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

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

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

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

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

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

 パスはファイルやフォルダの置いてある場所のことです。

 今回のケースでは、『C:\Excelマクロ\漢字入力帳』や『C:\Excelマクロ\漢字学習帳』のことをいいます。

 フルパスはファイルやフォルダの置いてある場所にファイル名を付け足したものです。

 今回のケースでは、

 『C:\Excelマクロ\漢字入力帳\漢字入力帳.xlsx』、

 『C:\Excelマクロ\漢字学習帳\漢字問題集.xlsx』、

 『C:\Excelマクロ\漢字学習帳\漢字解答集.xlsx』となります。


 それでは、『漢字入力帳』・『漢字問題集』・『漢字解答集』ブックをオープンして、

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

 『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、

 『漢字入力帳』ブックをセーブせずクローズ

 『漢字問題集』・『漢字解答集』ブックをセーブしてクローズするプログラムを作成しましょう。


 宣言部を改修します。

 フォルダ名列_変換実行シート『FolderNmCm_Cnv』に『3』を設定して定数宣言

 Public Const FolderNmCm_Cnv = 3

 ブック名列_変換実行シート『BookNmCm_Cnv』に『4』を設定して定数宣言

 Public Const BookNmCm_Cnv = 4


 読込フォルダ『EFolder』を文字列型として変数宣言

 Public EFolder As String

 読込ファイルフルパス『EPath』を文字列型として変数宣言

 Public EPath As String

 書込フォルダ『WFolder』を文字列型として変数宣言

 Public WFolder As String

 問題集ファイル_書込ワークブック『WBookMD』を文字列型として変数宣言

 Public WBookMD As String

 解答集ファイル_書込ワークブック『WBookKT』を文字列型として変数宣言

 Public WBookKT As String

 書込ファイルフルパス『WPath』を文字列型として変数宣言

 Public WPath As String とします。

 【『10_他のブックを更新2.xlsm』_ 宣言部】

Img10_2_21


2. ブックのオープンとクローズ

 処理部を改修します。

 『10_他のブックを更新2.xlsm』のマクロでは、

 『漢字入力帳』・『漢字問題集』・『漢字解答集』ブックをオープンして、

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

 『漢字問題集』・『漢字解答集』ブックへデータを書きこみ、

 『漢字入力帳』ブックをセーブせずクローズ

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


 ワークブックをオープンするときは、『Workbooks.Open』メソッドを使用します。

Img10_2_22

 『漢字入力帳』ブックをオープンするときは、『Workbooks.Open』メソッドをつかい、

 FileNameに『C:\Excelマクロ\漢字入力帳\漢字入力帳.xlsx』を指定して、

 Workbooks.Open (“C:\Excelマクロ\漢字入力帳\漢字入力帳.xlsx”)

 『漢字問題集』ブックをオープンするときは、『Workbooks.Open』メソッドをつかい、

 FileNameに『C:\Excelマクロ\漢字学習帳\漢字問題集.xlsx』を指定して、

 Workbooks.Open (“C:\Excelマクロ\漢字学習帳\漢字問題集.xlsx”)

 『漢字解答集』ブックをオープンするときは、『Workbooks.Open』メソッドをつかい、

 FileNameに『C:\Excelマクロ\漢字学習帳\漢字解答集.xlsx』を指定して、

 Workbooks.Open (“C:\Excelマクロ\漢字学習帳\漢字解答集.xlsx”) とします。


 ワークブックをクローズするときは、『Workbooks( ).Close』メソッドを使用します。

 ワークブックをクローズするときに、それをセーブつまり保存するかどうかは、

 引数『SaveChanges』に指定する定数によって決まります。

Img10_2_23

 『漢字問題集』ブックをセーブしてクローズするときは、『Workbooks( ).Close』メソッドをつかい、

 ブック名に『漢字問題集.xlsx』、SaveChangesに『True:保存する』を指定して、

 Workbooks(“漢字問題集.xlsx”).Close SaveChanges:=True

 『漢字解答集』ブックをセーブしてクローズするときは、『Workbooks( ).Close』メソッドをつかい、

 ブック名に『漢字解答集.xlsx』、SaveChangesに『True:保存する』を指定して、

 Workbooks(“漢字解答集.xlsx”).Close SaveChanges:=True

 『漢字入力帳』ブックをセーブせずクローズするときは、『Workbooks( ).Close』メソッドをつかい、

 ブック名に『漢字入力帳.xlsx』、SaveChangesに『False:保存しない』を指定して、

 Workbooks(“漢字入力帳.xlsx”).Close SaveChanges:=False とします。



3. 漢字問題集ブックと漢字解答集ブックを更新

 処理部を改修します。


 漢字入力帳フォルダ名・ワークブック名・フルパス名の取得

 EFolder = Workbooks(ThisBook).Worksheets(ConvertSheet) _

       .Cells(ENTFileRw_Cnv, FolderNmCm_Cnv).Value

 EBook = Workbooks(ThisBook).Worksheets(ConvertSheet) _

       .Cells(ENTFileRw_Cnv, BookNmCm_Cnv).Value

 EPath = EFolder & "\" & EBook

 フルパスを指定して漢字入力帳ブックを開く

 Workbooks.Open (EPath)


 漢字問題集フォルダ名・ワークブック名・フルパス名の取得

 WFolder = Workbooks(ThisBook).Worksheets(ConvertSheet) _

       .Cells(MDFileRw_Cnv, FolderNmCm_Cnv).Value

 WBookMD = Workbooks(ThisBook).Worksheets(ConvertSheet) _

       .Cells(MDFileRw_Cnv, BookNmCm_Cnv).Value

 WPathMD = WFolder & "\" & WBookMD

 フルパスを指定して漢字問題集ブックを開く

 Workbooks.Open (WPathMD)


 漢字解答集フォルダ名・ワークブック名・フルパス名の取得

 WFolder = Workbooks(ThisBook).Worksheets(ConvertSheet) _

       .Cells(KTFileRw_Cnv, FolderNmCm_Cnv).Value

 WBookKT = Workbooks(ThisBook).Worksheets(ConvertSheet) _

       .Cells(KTFileRw_Cnv, BookNmCm_Cnv).Value

 WPathKT = WFolder & "\" & WBookKT

 フルパスを指定して漢字解答集ブックを開く

 Workbooks.Open (WPathKT)


 漢字入力帳ブックを保存せずに閉じる

 Workbooks(EBook).Close SaveChanges:=False


 漢字問題集ブックを保存して閉じる

 Workbooks(WBookMD).Close SaveChanges:=True


 漢字解答集ブックを保存して閉じる

 Workbooks(WBookKT).Close SaveChanges:=True


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

Img10_2_24

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

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

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

Img10_2_25

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

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

Img10_2_30

 それでは、『漢字入力帳.xlsx』・『漢字問題集.xlsx』・『漢字解答集.xlsx』を閉じた状態で、

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


『漢字問題集.xlsx』
Img10_2_31
『漢字解答集.xlsx』
Img10_2_32

 『漢字入力帳』・『漢字問題集』・『漢字解答集』ブックをオープンして、『漢字入力帳』ブックからデータを読みとり、

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

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




目 次

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

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

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

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

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

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

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

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


YouTube

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


ブログ