こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Excel】2つのBook間のマクロ

Excel2003を使用しています。

BookAのSheet1とSheet2のある範囲をそれぞれBookBのSheet1とSheet2に値のみコピーするというマクロを作成しようとしています。

(1)Sheet1を値のみコピーするコード
  を書いて
(2)Sheet2を値のみコピーするコード
  を書こうと思っていたのですが、(1)から(2)へどのように続けて書いたらいいでしょうか?

(1)のコードは

 Sheets("Sheet1").Range("A1:G30").Select
 Selection.Copy
 Workbooks.Open Filename:="A:\B.xls"
 Sheets("Sheet1").Range("A1").Select
  Selection.PasteSpecial Paste:=xlPasteValues
  Application.CutCopyMode = False

と書いています。
また、こういう場合は、BookAとBookBのどちら側にコードを書いた方がいいのでしょうか?

投稿日時 - 2007-02-21 16:04:06

QNo.2771955

困ってます

質問者が選んだベストアンサー

Workbooks("A.xls")
などとすればいくようですね。
この点については失礼しました。

こちらでは可能なことを検証しました。

投稿日時 - 2007-02-22 11:26:25

お礼

再度の回答ありがとうございます。
おかげさまで、問題なく処理できるようになりました。

投稿日時 - 2007-02-22 11:35:24

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

エクセルでのマクロプログラミングの場合、一番簡単な方法はマクロの記録を初めて、実際の作業をしてみると自動的にマクロを作らせることです。
「ツール」の「マクロ」から「新しいマクロの記録」かツールバーの「マクロ記録」を押して始めて下さい。
作業動作が終わってから「記録終了」を押して標準モジュールを見ると、そこにマクロが作成されていますから、それを参考にするのが一番いいと思います。

投稿日時 - 2007-02-21 17:05:09

お礼

回答ありがとうございます。

「新しいマクロの記録」は今までにも使用したことはあり、これでできたコードに少し手を加えて、作成したマクロもあります。

以前、別件でマクロに関する質問をした際、「新しいマクロの記録」でできたコードの中には、通常はあまり使用しない関数があったり、不要な部分があったりすると回答をいただいたことがあったので、「新しいマクロの記録」を使用せずに、コードを書いた場合はどのようになるのかを知りたくて、質問させていただきました。

投稿日時 - 2007-02-22 09:17:43

ANo.1

同時に開いているワークブックが 2 つだけなら、
Workbooks(1).Activate
で、A.xls へ切り替わります。
コピー後、Workbooks(2).Activate
で、B.xls へ切り替えればできると思いますが、できないようなら
コピー後、Workbooks(2).Sheets(1).Range("A1").PasteSpesial …
でできるのではないかと思います。

コピー先がBなので、通常Bにマクロを残したくはないのではないかと思います。このときはAです。またどちらでも良い場合ならAでかまわないのでAです。

投稿日時 - 2007-02-21 16:14:43

お礼

回答ありがとうございます。

>同時に開いているワークブックが 2 つだけなら、
Workbooks(1).Activate
で、A.xls へ切り替わります。

これで、コードを書いて試してみましたが、A.xls へ切り替わっていないようで、(2)の処理のSheet2を選択することができずにエラーが出てしまいました。

「同時に開いているワークブックが2つだけなら」という条件付きのようですが、BookAそのものを指定するコードはどのように書いたらいいのでしょうか?もしよろしければ、教えていただけると助かります。

投稿日時 - 2007-02-22 09:07:58

あなたにオススメの質問