本記事では、複数のExcelファイル(ワークブック)内の特定セルのデータを、1つのファイルに統合する方法をご案内します。
目的
複数の Excel ファイル(ワークブック)内にある、特定の列/行のみを新しいワークブックに統合します。
移行元 Excel ファイル(ワークブック)
今回は、3つのワークブックの表内(図)から「仕入れ元」と「合計」のデータを、1つのワークブック(FINAL.xlsx)に統合します。

移行後のワークブック
統合後のワークブック

事前準備
- 入力フォルダ:C:\TEST\IN
-
移行したいデータを含むワークブック X.xlsx, Y.xlsx, Z.xlsx を同じフォルダ(C:\TEST\IN)に移動。
- 出力フォルダ:C:\TEST\OUT
-
統合先のワークブック FINAL.xlsx を作成し、見出し(仕入れ元や合計)や計算式などを入力。
(以下よりテスト用のサンプルファイルをダウンロードいただけます。)
ワークブック(.xlsx)のサンプルを入手
- 解凍後の TESTフォルダをCドライブ直下に移動いただくと、当記事の手順でご利用いただけます。
- フォルダ名や場所を変更された場合、記事内のファイルパスを実際のパスに変更してください。
タスクの作成
大きく分けて 5つの作業(処理)に分かれています。以下では、各作業をステップ形式でご案内します。
TASK1:一時的なワークブックの初期化
まずは、一時的なワークブック Temp.xlsx の内容をクリアにする処理を登録します。
Temp.xlsx は自動で生成されるため、この時点では存在していなくとも問題ありません。
同じ作業を繰り返す場合に必要となるため 1つ目の処理として追加しておきます。
Convert XLS を開いて [新規] ボタンをクリックし、「実行するアクションの選択」で [ファイルに対する特殊処理] を選択。
「特殊処理」の項目で「 [112] (*.XLS)セル内容クリア」 を選択し、「ファイル形式」の項目で、「[20] Excel File」を選択。

「入力ファイル」と「出力ファイル」に、Temp.xlsx のファイルパスC:\TEST\OUT\Temp.xlsxを入力。

[セル内容クリア] 設定のボタンをクリックして、入力シートの指定で 1 (Sheet1)を入力、クリア詳細指定で「すべてクリア」を選択し [OK] をクリック。

をクリックしてタスクに処理を追加。
TASK2:出力するワークブックの初期化
続いて、統合先ワークブック(FINAL.xlsx) の内容をクリアにする処理を登録します。
FINAL.xlsx 内で使用する計算式などを避けて、「仕入れ元」と「合計」の値のみをクリアにします。
この処理は前回作業時の内容が残っている場合に必要です。
「特殊処理」が「 [112] (*.XLS)セル内容クリア」となっていることを確認し、入力・出力ともに同じファイルパスC:\TEST\OUT\FINAL.xlsxを入力。

ここでは、見出し行より下のセル内(B4 以下)をクリアにする処理を追加します。
[セル内容クリア] 設定ボタンをクリックして、入力シートの指定で 1 (Sheet1)を、セルクリア指定に B4:* と入力、クリア詳細指定で「内容クリア」を選択し [OK] をクリック。

をクリックしてタスクに処理を追加。
TASK3:ワークブック内のデータをコピー
ここでは、入力フォルダ内の Excelファイル(ワークブック)内の特定セルのデータを、一時的なワークブックにコピーします。
具体的には INフォルダ内のワークブック内からB~G列2行目以降を Temp.xlsx にコピーします。
「特殊処理」の項目で「 [101](*.XLS)指定したシートのデータから同じまたは別の XLS ファイルにコピー」 を選択。

入力ファイルには、X.xlsxなどが保存されているINフォルダのパスC:\TEST\IN\*.xlsxを入力。
(フォルダ内の全てのファイルを対象とする場合、ワイルドカードを使用)
出力ファイルには Temp.xlsx のファイルパスC:\TEST\OUT\Temp.xlsxを入力。

[シートのコピーの詳細] 設定をクリックで開いて、以下のように設定。
- 入力シートの「コピーする項目を選択」のリストから「値」を選択。
- 「コピーするセルの選択」で「指定範囲をコピー」を選択し、コピーするセル範囲(例:
B2:G*)を入力。 - 出力シートでは、「コピー先の指定」で「直近に使用したセルの下にコピー」を選択し [OK] をクリック。

をクリックしてタスクに処理を追加。
TASK4:一時的なワークブック内から不要なデータを削除
以下の作業では、TASK3 でデータをコピーした Temp.xlsx 内から不要なデータを削除します。
「特殊処理」の項目で「 [107](*.XLS)列または行を指定して削除」 を選択。

入力ファイルと出力ファイルには、一時的なワークブックC:\TEST\OUT\Temp.xlsxを入力。
[列/行削除の詳細] 設定をクリックして「削除の指定」で「列の削除」を選択し、2-5と入力して [OK] をクリック。

TASK3で出力したワークブック(Temp.xlsx)の 2列目~5列目が削除されます。
(INフォルダ内のワークブックの C~F列のデータ)
をクリックしてタスクに処理を追加。
TASK5:最終ワークブックを生成
最後に一時的なワークブック(Temp.xlsx)を、最終的なワークブック(FINAL.xlsx)にコピーします。
「特殊処理」の項目で「 [101](*.XLS)指定したシートのデータから同じまたは別の XLS ファイルにコピー」 を選択。

入力ファイルには、TASK4 の出力先ワークブックC:\TEST\OUT\Temp.xlsxを入力。
出力ファイルには、統合先となるワークブックC:\TEST\OUT\FINAL.xlsxを入力。

[シートのコピーの詳細] 設定をクリックで開いて、以下のように設定。
- 入力シートの「コピーする項目を選択」のリストから「値」を選択。
- 「コピーするセルの選択」で「使用している範囲をコピー」を選択。
- 出力シートの「コピー先の指定」で「出力シートのセルまたは範囲の詳細を指定」を選びボックスに、貼り付けるセル位置に開始セルの
B4を入力。 - [OK] をクリック
をクリックしてタスクに処理を追加。
変換の開始と保存
をクリックして、登録した TASK1~5 の処理を実行します。
全ての処理が完了後、FINAL.xlsx を開いて、目的の状態となっていることを確認してください。

- [ファイル] [変換ジョブを名前を付けて保存] をクリックして、作成した作業を保存しておけば、次回以降の TASK 登録が不要です。
- [ファイル] [変換ジョブを開く] より保存したジョブを呼び出せます。
- 変換ジョブとして保存しておくことで、BATからの実行が容易となります。
(例)ConvertXLS.EXE /J "C:\TEST\{ジョブ名}.SII"
難しいと感じたら
サンプルを利用して、以下の手順で各処理を確認してみてください。
- ワークブックのサンプルをダウンロード
- 7zファイルを解凍して、ワークブックの状態を確認
- 記事の手順を参考に、各 TASK ごとに変換ボタンをクリックして、処理後のワークブックの状態を確認
コマンドライン/バッチファイルの記述例
REM 入力フォルダと出力フォルダをセット
set InputFolder=C:\TEST\IN
set OutputFolder=C:\TEST\OUT
REM Temp.xlsx のデータをクリア
ConvertXLS.EXE /S"%OutputFolder%\Temp.xlsx" /T"%OutputFolder%\Temp.xlsx" /P112 /1 0 /2 1 /V
REM FINAL.xlsx のデータをクリア
ConvertXLS.EXE /S"%OutputFolder%\FINAL.xlsx" /T"%OutputFolder%\FINAL.xlsx" /P112 /1 2 /2 1 /3 B4:* /V
REM 入力フォルダ(InputFolder)内にある xlsx ファイルの指定範囲を Temp.xlsx にコピー
ConvertXLS.EXE /S"%InputFolder%\*.xlsx" /T"%OutputFolder%\Temp.xlsx" /P101 /1 1 /2 0 /4 TRUE /5 B2:G* /6 1 /7 TRUE /8 below /V
REM Temp.xlsx から不要なデータ(列)を削除
ConvertXLS.EXE /S"%OutputFolder%\Temp.xlsx" /T"%OutputFolder%\Temp.xlsx" /P107 /1 1 /2 2-5 /3 TRUE /V
REM Temp.xlsx のデータを FINAL.xlsx にコピー
ConvertXLS.EXE /S"%OutputFolder%\Temp.xlsx" /T"%OutputFolder%\FINAL.xlsx" /P101 /1 1 /6 1 /7 TRUE /8 B4 /V
pause- Convert XLS.EXE がデフォルトのフォルダにインストールされていることが前提となります。
- 各処理ごとにダイアログボックスを表示させたくない場合、/V を削除してください。
使用したスイッチの説明
- /S
-
入力ファイルを指定
- /T
-
出力ファイルを指定(引用符を推奨)
- /P112
-
特殊処理 [112] セル内容クリア(以下は追加パラメータ)
- /1 # クリア詳細対象 (以下は # の値)
- 0 = すべてクリア
- 1 = フォーマットをクリア
- 2 = 内容をクリア
- 3 = コメントをクリア
- 4 = メモをクリア
- 5 = アウトラインをクリア
- /2 # シートを名前または番号で指定
- /3 # 対象範囲(セル)の指定(”使用範囲” の場合は空欄 or
TRUE)
- /1 # クリア詳細対象 (以下は # の値)
- /P101
-
特殊処理 [101] 指定したシートのデータから同じまたは別の XLS ファイルにコピー(以下は追加パラメータ)
- /1 = 入力シート(名前または番号で指定)
- /2 # コピーするもの(以下は # の値)
- 0 = 値
- 1 = 式のコピー
- 2 = 値と表示形式
- 3 = 数式と表示形式
- 4 = 全て
- 5 = コメント
- 6 = 書式
- 7 = 入力規則
- 8 = 罫線を除くすべて
- 9 = 列幅
- /3 = シート名のコピー(”TRUE” または “FALSE”)
- /4 = 指定範囲をコピー(”TRUE” または “FALSE”)
- /5 = コピー元の範囲指定
- /6 = 出力シート(名前または番号で指定)
- /7 = 指定範囲にコピー (”TRUE” または “FALSE”)
- /8 = コピー先の範囲指定
- /9 = 列幅のコピー(”TRUE” または “FALSE”)
- /P107
-
特殊処理 [107] 列または行を指定して削除(以下は追加パラメータ)
- /1 = 入力シート(名前または番号で指定)
- /2 # 削除対象(数値)。
指定: 2-4,10 は、2~4行目と10行目/列を削除。-1で最後の行/列を削除。-x の指定で最後の x 行/列を削除。 - /3 = 列の削除(”TRUE” または “FALSE”)
- /V
-
詳細モード(変換結果をメッセージボックスで表示)
