昨日、フォルダーの作成とプログラムファイルのダウンロードのご説明をしました。本日はその続きをご説明します。
「データ結合用フォルダ」フォルダーに、下図の様に、サンプルデータをダウンロードして格納して下さい。
「B」フォルダー内の「データ結合用フォルダ」フォルダーには、「170824_サンプルデータ1●.xlsx」と「170824_サンプルデータ2●.xlsx」 を
「C」フォルダー内の「データ結合用フォルダ」フォルダーには、「170729_サンプルデータ1.xlsx」と「170729_サンプルデータ2.xlsx」を入れて下さい。次に進みます。
「B」フォルダーにある、「複数ファイルの結合_VBA.xlsm」のModule1を実行してみます。
下図の様に2つのファイルが結合された新しいファイルが出来ます。
同様に「C」フォルダーにある、「ファイルを結合させるVBA.xlsm」のModule1を実行してみます。
下図の様に2つのファイルが結合された新しいファイルが出来ます。
プログラムのファイル名は異なりますが、実行したプログラム内容は同じものです。任意のフォルダーにプログラムファイルと「データ結合用フォルダ」を格納しても、正しく動作するプログラムの仕組みをご説明します。
次は、Module1のプログラムの抜粋です。「B」フォルダーにある、Module1の前提でご説明します。
'-------------------------------------------------
'現在のカレントパスの●「データ結合用フォルダ」フォルダに移動する
対象ディレクトリ名 = ThisWorkbook.Path & "\データ結合用フォルダ"
「B」フォルダーにありますからThisWorkbook.Pathの値は”C:\A\B”でその後ろに、"\データ結合用フォルダ"が記述されていますので、対象ディレクトリ名 の値は、” C:\A\B\データ結合用フォルダ”となります。次に進みます。
'-------------------------------------------------
'(1) 拡張子xls?のファイル名を取り出す
対象ブック名 = Dir(対象ディレクトリ名 & "\*.xls?")
Dir関数は( )内に指定したファイルが存在したとき、そのファイル名を返す関数です。上記の代入文を書き直すと、
対象ブック名 = Dir(C:\A\B\データ結合用フォルダ\*.xls?")となります。Dir関数1回目の実行時の、対象ブック名は
「170824_サンプルデータ1●.xlsx」です。
この様にThisWorkbook.Path & "\データ結合用フォルダ"と記述することで、プログラムファイルが属するフォルダーに「データ結合用フォルダ」を入れることで、フォルダー位置を任意に指定(好きなフォルダーに格納)出来る様になります。
次回は、表題列の項目の並びや項目数が変化しても、修正する必要なく動作するプログラムの組み方をご説明予定です。お楽しみに。
読者の方へ。過去の記事をご覧になられていて、「画像」が上手く表示されない場合は、「hiro-yukioのサイト」の「過去のブログ記事」フォルダーにPDFで保存しましたのでこちらでご覧下さい。


