お詫び:8月7日の記事でダウンロードするプログラムは「ファイルを結合させるVBA.xlsm」と記載していましたが、「複数ファイルの結合_VBA.xlsm」の誤りでした。訂正致します。
8月8日掲載の技巧的な内容をご説明します。注釈文 や 変数名 を書き直し、より読者の方に解りやすく修正しました。また、プログラム名を「ファイルを結合させるVBA.XLSM」と変更致しました。
「ファイルを結合させるVBA.XLSM」が最新版のプログラムです。こちらをダウンロードして下さい。
技巧的内容
・参照したいブックの指定の方法。(開いているブックor新ブック)
復習事項を記述します。特殊な変数とSet命令文?の組み合わせで「書き出し側」ブックと「書き込まれる側」のブックが指定できるとご説明しました。
既に掲載している内容では、「書き出し側」ブックの指定はこの特殊な変数とSet命令文?の組み合わせで指定していますが、「書き込まれる側」はWith ThisWorkbook…と記述しているだけでした。
そこで、・・・
「書き込まれる側」のブックも特殊な変数とSet命令文?の組み合わせで「はっきり明示」し、プログラムの書かれたブックに「書き込む」のではなく、プログラムの書かれたブック以外のブックに「書き込む」ための準備の記述が次になります。(Module1の抜粋です)次に進みます。
'-------------------------------------------------
'新規ワークブックを作成 ← 一時的(このVBAの記述のあるプログラムのフォルダー内)
'ファイル名 "データ結合用一時ブック.xlsx"
Application.SheetsInNewWorkbook = 1 'シートは1つだけのブック
Workbooks.Add '新規ブックを開く(作成)
Dim データ結合用一時ブック As Workbook '特殊変数(ブック)
Dim データ結合用一時セル範囲 As Range ''特殊変数(セル範囲)
Set データ結合用一時ブック = ActiveWorkbook
'新規ブック(一時)を「データ結合用一時ブック」と命名
←「はっきり明示」
データ結合用一時ブック.SaveAs Filename:=ThisWorkbook.Path & "\データ結合用一時ブック.xlsx"
'↑このプログラムが入っているブックと同じフォルダー内に、「データ結合用一時ブック.xlsx」と名前を付けて、一旦保存
「データ結合用一時ブック.xlsx」が「書き込まれる側」になる様に作成しています。このプログラムの中ほどに、次の With文 が記述されています。これにより、「データ結合用一時ブック.xlsx」の1番目のシートを「はっきり明示」し、処理を行います。次に進みます。
'====================================================
'▲▲▲ 新しいブックにデータ貼り付け(転記)の処理 ▲▲▲
With データ結合用一時ブック.Worksheets(1) 'これ以降、データ結合用一時ブックの一番目のシートを指定する。
その結果と言うべきか、意図的にですが、「プログラムの入ったファイル(ブック)」と「データだけ入ったファイル(ブック)」を別々に取り扱うことが出来る様にしています。
「プログラムの入ったファイル(ブック)」は常にプログラムだけを保存しておき、必要な時に必要な「Module」を開いて実行させることが出来れば、効率よく「データ処理」および「プログラム」の管理が可能となります。
余談ですが、私は最初の頃は、「暗黙の了解」が理解できておらず、その為、「はっきり明示」の方法も当然解らず、プログラムとデータの入ったファイル(ブック)がいくつも出来ました。常にデータと共にプログラムがファイル内にある為、ファイルサイズが大きくなるのと、新しいデータを扱う為に、プログラムの入った雛形のファイル(ブック)を用意しておく必要がありました。
次回は、プログラムによるオートフィルター解除の方法をご説明予定です。お楽しみに。
読者の方へ。過去の記事をご覧になられていて、「画像」が上手く表示されない場合は、「hiro-yukioのサイト」の「過去のブログ記事」フォルダーにPDFで保存しましたのでこちらでご覧下さい。
8月7日の記事は後日修正し、お知らせ致します。