フォルダ内の全ブック全シートを1ブックに束ねるExcelマクロ
Excelファイル何十個に含まれてる全シートを1ファイルにまとめるという退屈極まりない作業を、しかも反復して行う羽目になりました。レシートでも食っていた方がマシです。
首を吊る前にExcelマクロにチャレンジしてみました。
以下のマクロを起動すると、マクロと同じフォルダにある1つ目のExcelファイルに他の全ブック・全シートをコピーして、『別名で保存』ダイアログを開きます。
ファイル名の順番にブックを開いて、シートの並びはそのままで1ブック目の末尾に移動させてるだけです。やってることは移動ですが、全てのシートを移動させると元のブックは保存せずに閉じられるので、元のブックには影響ありません。
この例では別名保存ですが、ファイル名があらかじめ決まってて固定なら、Workbook.SaveAs()
を使えば充分です。
Dir()
の使い方は、下記ページを参考にさせていただきました。
Office TANAKA - Excel VBAファイルの操作[ファイルの一覧を取得する]
VBAでの配列の使い方は、下記ページを参考にさせていただきました。
余談
コメント「対象が無かったらやめます」のところは、当初は If (UBound(filePathList) = 0) Then
というふうにしようとしました。「変数 filePathList
がカラだったら」という判定をしたかったからです。
でも、要素数を確保してない配列に対して UBound()
すると インデックスが有効範囲にありません
エラーになってしまいました。こういうのはできないのかとググってみたところ……。
[Excel VBA]動的配列の初期化チェック – Tech Storage
[ExcelVBA][サンプルコード] 動的配列が空かどうか判定する - Javaのサンプルコード置いときますね
Variant型の動的配列で初期化済みかどうかを判定する方法 | プログラミングテクニック集キヤミー
大変そうなのでやめました。結局、対象が無いかどうかを判定したいだけなので、カウンタに使ってる変数がゼロかどうかを見るようになったのです。