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

1 他のレンジを更新

2 他のシートを更新

3 逆Z式並びで更新

4 複数シートを更新

5 他のブックを更新

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

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

他のブックを更新

 今回は、Excel VBA/マクロによってあるブックのセルから別ブックのセルに文字を代入するマクロをつくってみます。



1. 他のブックを更新

 あるシートのセルから別シートのセルに値を代入するときは、次のような構文になります。

Img10_1_01

 あるシートから別のシートに値を代入するときは、それぞれのワークシート名を指定しました。

 あるブックのセルから別ブックのセルに値を代入するときは、

 あるブックのワークブック名と、別ブックのワークブック名をそれぞれ指定する必要があります。

 あるブックのセルから別ブックのセルに値を代入するときは、

 それぞれのワークブック名及びワークシート名を指定します。

 次のような構文になります。

Img10_1_02



2. マクロ実行用のブックを作成

 前回は、同一ブック内で、入力シートからデータを読みとり、出力シートへデータを書きこみました。

 今回は、入力ブックからデータを読みとり、出力ブックへデータを書きこみます。

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

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

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

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

Img10_1_08

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

Img10_1_09

 最初に、10問の漢字文字列を用意した『漢字入力帳.xlsx』、白紙の『漢字問題集.xlsx』・『漢字解答集.xlsx』

 を作成します。

『漢字入力帳.xlsx』
Img10_1_11
『漢字問題集.xlsx』
Img10_1_12
『漢字解答集.xlsx』
Img10_1_13

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

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

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

Img10_1_14

 セル『C5』に入力ファイル名『漢字入力帳.xlsx』、セル『C8』に出力ファイル名『漢字問題集.xlsx』、

 セル『C9』に出力ファイル名『漢字解答集.xlsx』、を記入します。

 次に、更新ボタンを作成します。

Img10_1_15

 開発タブの挿入コマンドをクリックしたら表示されるプルダウンメニューから、

 フォームコントロールのボタンを選んでクリックしてください。

 そして、『D8』あたりにマウスでカーソルを合わせてマウスを指でクリックして、

 そのまま指を離さずドラッグして『E9』あたりで指を離します。

 マクロの登録画面が現れますが、ここではキャンセルボタンをクリックします。

 すると、『ボタン1』というボタンが現れます。

Img10_1_16

 『ボタン1』というボタンにマウスでカーソルを合わせて右クリックしたら表示されるプルダウンメニューから、

 テキストの編集を選んでクリックしてください。

Img10_1_17

 ボタン上の文字が編集可能になったため、『ボタン1』を『更新』という名前に変更します。

Img10_1_18

 『更新』ボタンの選択状態を解除するために、『更新』ボタンの外側のセルをクリックします。

 とりあえず、『E11』をクリックしておきます。

Img10_1_19

 これで、Excelマクロ有効ブック『10_他のブックを更新1.xlsm』ができました。



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

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

 データを書きこむプログラムを作成しましょう。

 『9_他の複数シートを更新3.xlsm』のマクロを全てコピーして、

 『10_他のブックを更新1.xlsm』の新規標準モジュールにペーストします。


 では、宣言部を改修しましょう。

 【定数宣言】

 ブック名列_変換実行シート『BookNmCm_Cnv』に『3』

 Public Const BookNmCm_Cnv = 3

 入力帳ファイルの抽出行_変換実行シート『ENTFil読取行_Cnv』に『5』

 Public Const ENTFil読取行_Cnv = 5

 問題集ファイルの抽出行_変換実行シート『MDFil読取行_Cnv』に『8』

 Public Const MDFil読取行_Cnv = 8

 解答集ファイルの抽出行_変換実行シート『KTFil読取行_Cnv』に『9』

 Public Const KTFil読取行_Cnv = 9

 【変数宣言】

 このワークブック『ThisBook』

 Public ThisBook As String

 データ変換実行ワークシート『ConvertSheet』

 Public ConvertSheet As String

 読取ワークブック『EBook』

 Public EBook As String

 問題集ファイル_書込ワークブック『WBookMD』

 Public WBookMD As String

 解答集ファイル_書込ワークブック『WBookKT』

 Public WBookKT As String

 書込ワークブック『WBook』

 Public WBook As String とします。

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

Img10_1_21

 では、処理部を改修しましょう。

 プログラムの実行時に、動作中で、複数あるものの内、最前面に表示されている状態のことを、

 アクティブと言います。

 そして、プログラムの実行時に、動作中で、複数あるものの内、最前面に表示されている

 ワークブックのことを、アクティブワークブック(ActiveWorkbook)と言います。

 更に、プログラムの実行時に、動作中で、複数あるものの内、最前面に表示されているシートの

 ことを、アクティブシート(ActiveSheet)と言います。


 (1) このExcelマクロ実行ブックの名前を取得します。

  『更新』ボタンを押した直後に、このExcelマクロ実行ブックはアクティブワークブックとなるため、

  マクロの最初の箇所で、アクティブワークシートの名前(ActiveWorkbook.Name)を取得し、

  変数『ThisBook』に格納します。

  ThisBook = ActiveWorkbook.Name

 (2) このExcelマクロ実行シートの名前を取得します。

  『更新』ボタンを押した直後に、このExcelマクロ実行シートはアクティブシートとなるため、

  マクロの最初の箇所で、アクティブシートの名前(ActiveSheet.Name)を取得し、

  変数『ConvertSheet』に格納します。

  ConvertSheet = ActiveSheet.Name

 (3) このExcelマクロ実行ブックのExcelマクロ実行シートのセル『C5』から入力ファイル名『漢字入力帳.xlsx』

  を取得し、変数『EBook』に格納します。

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

       .Cells(ENTFil読取行_Cnv, BookNmCm_Cnv).Value

 (4) このExcelマクロ実行ブックのExcelマクロ実行シートのセル『C8』から出力ファイル名『漢字問題集.xlsx』

  を取得し、変数『WBookMD』に格納します。

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

       .Cells(MDFil読取行_Cnv, BookNmCm_Cnv).Value

 (5) このExcelマクロ実行ブックのExcelマクロ実行シートの

  セル『C9』から出力ファイル名『漢字解答集.xlsx』を取得し、

  変数『WBookKT』に格納します。

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

       .Cells(KTFil読取行_Cnv, BookNmCm_Cnv).Value

 (6) 『9_他の複数シートを更新3.xlsm』のマクロでは、同一ブック内で、あるシートのセルからデータを

  読みとり、別シートのセルへデータを書きこみましたが、『10_他のブックを更新1.xlsm』のマクロでは、

  あるブック・シートのセルからデータを読みとり、別ブック・シートのセルへデータを書きこみます。

  そのため、変更箇所は、次のようになります。

Img10_1_22

 このように、Worksheets(ESheet).Cells(読取行, 読取列)の前にWorkbooks(EBook).

 Worksheets(WSheet).Cells(行番号, 列番号)の前にWorkbooks(WBook).を追加します。

 セル『C5』に入力ファイル名『漢字入力帳.xlsx』、セル『C8』に出力ファイル名『漢字問題集.xlsx』、

 セル『C9』に出力ファイル名『漢字解答集.xlsx』を記入します。


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

Img10_1_23

 サブプロシージャ『シートから複数シート3』は、『他のブックから他のブックへ更新』に名称を変更しておきます。

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

Img10_1_24

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

 そこで、『更新』ボタンにマウスでカーソルを合わせて右クリックしたら表示されるプルダウンメニューから、

 マクロの登録を選んでクリックしてください。

Img10_1_28

 『マクロの登録』画面が現れました。

Img10_1_29

 『マクロの登録』画面に表示されているマクロの一覧から、『他のブックから他のブックへ更新』を選択し、

 OKボタンをクリックします。

 これで、『更新』ボタンにマクロ『他のブックから他のブックへ更新』がセットされました。

Img10_1_30

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

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


『漢字問題集.xlsx』
Img10_1_31
『漢字解答集.xlsx』
Img10_1_32

 『漢字入力帳.xlsx』からデータが読みとられ、『漢字問題集.xlsx』・『漢字解答集.xlsx』へ

 データが書きこまれました。




目 次

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

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

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

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

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

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

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

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


YouTube

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


ブログ