【他のレンジ/シート/ブックを更新する】
1 他のレンジを更新
2 他のシートを更新
3 逆Z式並びで更新
4 複数シートを更新
5 他のブックを更新
6 他のブックをオープン・クローズ
7 新規ブックを作成し更新
今回は、Excel VBA/マクロによってあるブックのセルから別ブックのセルに文字を代入するマクロをつくってみます。
あるシートのセルから別シートのセルに値を代入するときは、次のような構文になります。
あるシートから別のシートに値を代入するときは、それぞれのワークシート名を指定しました。
あるブックのセルから別ブックのセルに値を代入するときは、
あるブックのワークブック名と、別ブックのワークブック名をそれぞれ指定する必要があります。
あるブックのセルから別ブックのセルに値を代入するときは、
それぞれのワークブック名及びワークシート名を指定します。
次のような構文になります。
前回は、同一ブック内で、入力シートからデータを読みとり、出力シートへデータを書きこみました。
今回は、入力ブックからデータを読みとり、出力ブックへデータを書きこみます。
入力ブックと出力ブックの間でデータを読み書きすることになるため、
今回は、そのマクロの実行用ブックを作成してみます。
入力ブック・出力ブック・マクロ実行用ブックの関連図は次のようになります。
【『他のブックから他のブックへ更新マクロ1』実行前】
【『他のブックから他のブックへ更新マクロ1』実行後】
最初に、10問の漢字文字列を用意した『漢字入力帳.xlsx』、白紙の『漢字問題集.xlsx』・『漢字解答集.xlsx』
を作成します。
続けて、『漢字入力帳』ブックからデータを読みとり、『漢字問題集』・『漢字解答集』ブックへデータを
書きこむマクロを実行するためのワークブックを作成します。
先ず、次の画像のようなExcelマクロ有効ブック『10_他のブックを更新1.xlsm』を作成しましょう。
セル『C5』に入力ファイル名『漢字入力帳.xlsx』、セル『C8』に出力ファイル名『漢字問題集.xlsx』、
セル『C9』に出力ファイル名『漢字解答集.xlsx』、を記入します。
次に、更新ボタンを作成します。
開発タブの挿入コマンドをクリックしたら表示されるプルダウンメニューから、
フォームコントロールのボタンを選んでクリックしてください。
そして、『D8』あたりにマウスでカーソルを合わせてマウスを指でクリックして、
そのまま指を離さずドラッグして『E9』あたりで指を離します。
マクロの登録画面が現れますが、ここではキャンセルボタンをクリックします。
すると、『ボタン1』というボタンが現れます。
『ボタン1』というボタンにマウスでカーソルを合わせて右クリックしたら表示されるプルダウンメニューから、
テキストの編集を選んでクリックしてください。
ボタン上の文字が編集可能になったため、『ボタン1』を『更新』という名前に変更します。
『更新』ボタンの選択状態を解除するために、『更新』ボタンの外側のセルをクリックします。
とりあえず、『E11』をクリックしておきます。
これで、Excelマクロ有効ブック『10_他のブックを更新1.xlsm』ができました。
それでは、『漢字入力帳』ブックからデータを読みとり、『漢字問題集』・『漢字解答集』ブックへ
データを書きこむプログラムを作成しましょう。
『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』_ 宣言部】
では、処理部を改修しましょう。
プログラムの実行時に、動作中で、複数あるものの内、最前面に表示されている状態のことを、
アクティブと言います。
そして、プログラムの実行時に、動作中で、複数あるものの内、最前面に表示されている
ワークブックのことを、アクティブワークブック(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』のマクロでは、
あるブック・シートのセルからデータを読みとり、別ブック・シートのセルへデータを書きこみます。
そのため、変更箇所は、次のようになります。
このように、Worksheets(ESheet).Cells(読取行, 読取列)の前にWorkbooks(EBook).、
Worksheets(WSheet).Cells(行番号, 列番号)の前にWorkbooks(WBook).を追加します。
セル『C5』に入力ファイル名『漢字入力帳.xlsx』、セル『C8』に出力ファイル名『漢字問題集.xlsx』、
セル『C9』に出力ファイル名『漢字解答集.xlsx』を記入します。
【サブプロシージャ『他のブックから他のブックへ更新』】
サブプロシージャ『シートから複数シート3』は、『他のブックから他のブックへ更新』に名称を変更しておきます。
【サブプロシージャ『ワークシート更新』】
これで、Excelマクロ有効ブック『10_他のブックを更新1.xlsm』のプログラムが完了しました。
そこで、『更新』ボタンにマウスでカーソルを合わせて右クリックしたら表示されるプルダウンメニューから、
マクロの登録を選んでクリックしてください。
『マクロの登録』画面が現れました。
『マクロの登録』画面に表示されているマクロの一覧から、『他のブックから他のブックへ更新』を選択し、
OKボタンをクリックします。
これで、『更新』ボタンにマクロ『他のブックから他のブックへ更新』がセットされました。
それでは、『漢字入力帳.xlsx』・『漢字問題集.xlsx』・『漢字解答集.xlsx』を開いたままの状態で、
『更新』ボタンをクリックしてマクロ『他のブックから他のブックへ更新』を実行してみましょう。
『漢字入力帳.xlsx』からデータが読みとられ、『漢字問題集.xlsx』・『漢字解答集.xlsx』へ
データが書きこまれました。
2023-03-19
2021-12-20
2021-12-12