- ベストアンサー
複数のエクセルファイルをひとつにまとめる方法
- 12か月分の伝票ファイルを自動で追記して、ひとつのエクセルファイルにまとめたいです。
- マクロを使用して、特定のフォルダ内のエクセルファイルを結合することができます。
- 具体的なソースコードとして、VBAを使ったマクロの例を紹介します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下のようなキー操作をマクロの記録で記録すれば、セル範囲や貼り付け位置を自動的に検出できるマクロを作成することができます。 まとめ.xlsで「ツール」「マクロ」「新しいマクロの記録」で適当な名前を付けて記録を開始します。 1月.xlsを立ち上げてから、データシートのA2セルを選択し、Ctrl+Shift+Endでデータ範囲を自動取得し、Ctrl+Cで「コピー」します。 まとめ.xlsシートの項目名のセルを明示的に選択し(たとえば適当なセルを選択してからA1セルを選択)、Ctrl+↓で入力されている一番下のA列のセルを自動選択して、記録終了アイコンの右の「相対参照」アイコンをクリックし、↓キーで最終セルの下の未入力セルを選択してから、「相対参照」ボタンをもう一度クリックして相対参照を解除してから、Ctrl+Vで貼り付け、1月.xlsを閉じます。 これで1つのブックのデータがまとめブックに追加されるコードが書かれていますので、Alt+F11でマクロの編集画面を開き、この部分のコードをブック名部分だけ変えて12月分までコピー貼り付けすれば完成です。
その他の回答 (3)
- nattocurry
- ベストアンサー率31% (587/1853)
各月の伝票は、1つのファイルでシートごとに分かれているのではなく、それぞれのファイルが存在するということですよね。 お望みのマクロは、「マクロは勉強中であまり解らないから具体的なコードを書いて欲しい」、と言うような人に理解できるレベルのものではないと思います。 マクロの勉強の基本は、まずはやりたいことを手作業でやって、それを「マクロの記録」で記録して、記録されたコードを見て、それに使われているプロパティやメソッドや関数などを調べて理解することから始まります。 現時点で上級者の人のほとんどが、そのようにして勉強してきたと思います。 この質問の作業としては、 1月のファイルを開く。 2月のファイルを開いて、2月のデータをコピーして、1月のデータの下に貼り付ける。 3月のファイルを開いて、3月のデータをコピーして、1月のデータの下に貼り付ける。 : : m月のファイルを開いて、m月のデータをコピーして、1月のデータの下に貼り付ける。 : : 11月のファイルを開いて、11月のデータをコピーして、1月のデータの下に貼り付ける。 12月のファイルを開いて、12月のデータをコピーして、1月のデータの下に貼り付ける。 だと思います。 もしくは、 12月のファイルを開く。 11月のファイルを開いて、11月のデータをコピーして、12月のデータの先頭に挿入する。 10月のファイルを開いて、10月のデータをコピーして、12月のデータの先頭に挿入する。 : : m月のファイルを開いて、m月のデータをコピーして、12月のデータの先頭に挿入する。 : : 2月のファイルを開いて、2月のデータをコピーして、12月のデータの先頭に挿入する。 2月のファイルを開いて、2月のデータをコピーして、12月のデータの先頭に挿入する。 ですね。 前者の場合は、貼り付ける位置が変わるので、1月のデータの最後を調べる必要がありますが、後者の場合は、同じ場所に挿入すれば良いので、その分だけ楽かも。 ちなみに、データのどこかを選択した状態で Ctrl+A を押したときと、周りに何もデータの無い空白セルを選択した状態で Ctrl+A を押したときでは、結果が異なります。 これをヒントに、実際に手作業して「マクロの記録」を使って、マクロを調べましょう。
お礼
ありがとうございます^^ 結構簡単にできるかな?と思いましたが、意外に難しいマクロになるのですね^^; マクロの記録でがんばってみます。ありがとうございました^^
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
(XL2003/2002だとして D:\tempフォルダ内にExcelファイルがあるとします シート名はSheet1です) 過去の月に変更があるとも思えませんが データベースクエリで SQLを編集状態にして SELECT `Sheet1$`.日付, `Sheet1$`.金額, `Sheet1$`.項目 FROM `D:\temp\1月`.`Sheet1$` `Sheet1$` union all SELECT `Sheet1$`.日付, `Sheet1$`.金額, `Sheet1$`.項目 FROM `D:\temp\2月`.`Sheet1$` `Sheet1$` union all SELECT `Sheet1$`.日付, `Sheet1$`.金額, `Sheet1$`.項目 FROM `D:\temp\3月`.`Sheet1$` `Sheet1$` ・・・ とすればつなぐことができ、データを更新すれば変更が反映されます MS-Query でSQLの編集時、添付図のような画面が出ますがOKで無視します
- web2525
- ベストアンサー率42% (1219/2850)
一度しか行わない操作であれば、コピーして貼り付けを行うのが一番簡単 頻繁に同じ操作を行う必要がある動作ではないと思いますが、どうですか?
お礼
ご返答ありがとうございます^^ できれば毎年使いたいもので、自動化したいということを書いておくべきでした。
お礼
なるほど、マクロの記録という機能を使ったことがなかったのですが、このように使用するのですね^^ 勉強になりました。ありがとうございました^^