- ベストアンサー
【Excel】2つのBook間のマクロ
- Excel2003を使用して、BookAのSheet1とSheet2の範囲をそれぞれBookBのSheet1とSheet2に値のみコピーするマクロの作成方法について教えてください。
- マクロのコード例として、Sheet1を値のみコピーするコードを示しました。Sheet2のコードはどのように続けて書けば良いですか?また、BookAとBookBのどちら側にコードを書くべきですか?
- マクロの実行により、Excel2003のBookAのSheet1とSheet2の範囲をそれぞれBookBのSheet1とSheet2に値のみコピーする方法を教えてください。また、コードはどのBookに書くべきですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Workbooks("A.xls") などとすればいくようですね。 この点については失礼しました。 こちらでは可能なことを検証しました。
その他の回答 (2)
- 446kun
- ベストアンサー率8% (2/24)
エクセルでのマクロプログラミングの場合、一番簡単な方法はマクロの記録を初めて、実際の作業をしてみると自動的にマクロを作らせることです。 「ツール」の「マクロ」から「新しいマクロの記録」かツールバーの「マクロ記録」を押して始めて下さい。 作業動作が終わってから「記録終了」を押して標準モジュールを見ると、そこにマクロが作成されていますから、それを参考にするのが一番いいと思います。
お礼
回答ありがとうございます。 「新しいマクロの記録」は今までにも使用したことはあり、これでできたコードに少し手を加えて、作成したマクロもあります。 以前、別件でマクロに関する質問をした際、「新しいマクロの記録」でできたコードの中には、通常はあまり使用しない関数があったり、不要な部分があったりすると回答をいただいたことがあったので、「新しいマクロの記録」を使用せずに、コードを書いた場合はどのようになるのかを知りたくて、質問させていただきました。
- driverII
- ベストアンサー率27% (248/913)
同時に開いているワークブックが 2 つだけなら、 Workbooks(1).Activate で、A.xls へ切り替わります。 コピー後、Workbooks(2).Activate で、B.xls へ切り替えればできると思いますが、できないようなら コピー後、Workbooks(2).Sheets(1).Range("A1").PasteSpesial … でできるのではないかと思います。 コピー先がBなので、通常Bにマクロを残したくはないのではないかと思います。このときはAです。またどちらでも良い場合ならAでかまわないのでAです。
お礼
回答ありがとうございます。 >同時に開いているワークブックが 2 つだけなら、 Workbooks(1).Activate で、A.xls へ切り替わります。 これで、コードを書いて試してみましたが、A.xls へ切り替わっていないようで、(2)の処理のSheet2を選択することができずにエラーが出てしまいました。 「同時に開いているワークブックが2つだけなら」という条件付きのようですが、BookAそのものを指定するコードはどのように書いたらいいのでしょうか?もしよろしければ、教えていただけると助かります。
お礼
再度の回答ありがとうございます。 おかげさまで、問題なく処理できるようになりました。