質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

1回答

354閲覧

ExcelVBAで特定フォルダに格納した複数のブックからデータ(表)を一つのブックにまとめたい

cjapan35

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2019/07/25 02:46

編集2019/09/25 09:02

前提・実現したいこと

Excel VBAでフォルダにまとめてあるいくつかのブックから表を取り出して一つのブックにまとめるというマクロを作りたいです。
ファイルの名前は基本的に統一されています。(区別するために末尾がAやBという違いがあるのみ)
ファイルにはシート1に表を作っていて、それを一つのブックにまとめてずらっと表示させることが目標です。
表の幅はA~Rまで、行数はブックによって異なります。
マクロブックにボタンを設置しており、それを押すとフォルダ選択画面が開き、フォルダを選択すると処理が実行されるという流れです。
特に条件等はなく、そのまま表まるごと並べていきたいです。

発生している問題・エラーメッセージ

表を取り出せない。まっさらの状態で新規ブックが出来上がる。

該当のソースコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

1、結果ブックは毎回開くようになっていますが
最初に開いて、最後に保存して閉じるが良いです。
(ファイルをまとめるの関数内で行なってください)

2、結果ブックは、プライベート変数で宣言が良いです。
wbk_newは、関数の外に出してください。

3、Get集約の関数で、copy関数を使って開いたファイルからコピーしてください。

投稿2019/07/25 03:45

tgo

総合スコア61

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cjapan35

2019/07/25 06:14

ありがとうございます。 wbk.Worksheets("ファイル").Copy After:=wbk_new.Worksheets("集約") を追加したのですが、オブジェクト変数またはWithブロック変数が設定されていませんとでるのですが、解決方法がわかりません。
tgo

2019/07/25 10:03

セルのコピーだと Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("C2") (Sheet1のセルA1からSheet2のセルC2にコピーする場合) でできます。
cjapan35

2019/07/26 08:49

ありがとうございます。シートのコピーではなくセルを範囲指定してコピーしなければなりませんでした。結果的に sh.Range("R" & i).MergeCells = False sh.Columns("A:R").Copy wkst.Rows(j).PasteSpecial これて表を取り出すことができました。 ただ現時点ではブックを一つにまとめることができていなくて、フォルダに二つブックがあれば二つ出来上がってしまう形です。 一つにまとめる処理を書きたいのですが、その辺は初めに回答いただいた結果ブックをプライベート変数で宣言というあたりが必要になってくるのでしょうか?
tgo

2019/07/26 10:13

プログラムが進んだようで良かったです。 まとめたいとの話ですが、毎回違うブックを開いてないですか? 開くブックのファイル名が違えば、違うブックが開かれます。 プライベート変数にして、処理が始まる前に、開いて、処理が終わった後に閉じる方法のでもよいと思います。
cjapan35

2019/07/29 01:35

ありがとうございます。 質問時に書いたコードを別の場所(関数)に移す程度のことで可能ですか? それとも新たにコードを書き足したりする必要がありますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問