前提・実現したいこと
Excel VBAでフォルダにまとめてあるいくつかのブックから表を取り出して一つのブックにまとめるというマクロを作りたいです。
ファイルの名前は基本的に統一されています。(区別するために末尾がAやBという違いがあるのみ)
ファイルにはシート1に表を作っていて、それを一つのブックにまとめてずらっと表示させることが目標です。
必要なのはシート1のデータのみで、ほかのシートからはデータはとりません。
表の幅はA~Rまで、行数はブックによって異なります。
マクロブックにボタンを設置しており、それを押すとフォルダ選択画面が開き、フォルダを選択すると処理が実行されるという流れです。
特に条件等はなく、そのまま表まるごと並べていきたいです(2つ目以降は見出し部分はいらない)。
発生している問題・エラーメッセージ
実行時エラー'-2147221080(800401a8)': オートメーションエラーです。
というエラーが
" LastRw2 = wbk_new.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row "
のところで表示されます。
コードを見れておりませんが、これに状況が似てますね。
確認されましたか?
https://teratail.com/questions/125847
当該箇所にactiveと入れてみましたがオートメーションエラーは消えませんでした。
LastRw2 の 右辺に 数値を入れても おちますか?(最終行)
自分の解釈があってるか分かりませんが、LastRw2の右辺を消して1と入れてみたところ、wbk_new.SaveAs (workBookName) の部分が黄色くなり、オートメーションエラーと表示されました。
つまり、このことから。最終行を代入するぶんには落ちないという切り分けができましたね。
落ちる箇所が変わったので。
素朴な質問ですが、再帰関数内部のループでファイルのopen、集計、保存を行ってないのは
なぜでしょう?
そのデバッグ中にworkBookNameの変数の中身を見てください。
ファイル名だけでパスの情報がなかったりしませんか?
ありがとうございます。
新規ファイルをループで何度も開くのは処理的にもよくないことかと思ったので外に出して初めに開くようにしています。
ループの方でオープン、集計、保存を行わなければならないのでしょうか?
参考までに私の書いたリコール(再帰呼び出し)を参考にされてください。
https://teratail.com/questions/201039
Secretさん
workBookName変数の中が空になってました。ここにパスの情報を入れなければならないのですね。
どういった指定をすればいいのでしょうか?
nanami12さん
すみません、見たのですがあまりわかりませんでした。
VBAを全く学んだことのない状態でこのマクロを作り始めているものでして...
ExcelVBAの基礎を学んだ方が良いと思います。
https://excel-ubara.com/excel_vba.html
回答2件
あなたの回答
tips
プレビュー