• ベストアンサー

Book間でのコピー

エクセルで以下の処理を実行するマクロを知りたいのですが。 Book1とBook2が開いています。 Book2のSheet1のA1~A10を、Book2のSheet1のA1~A10にコピーします。 この処理を任意の2つのBook間で実行するためにはどんなマクロになるでしょうか。(Book3とBook5で行ったり、Book25とBook46で行ったり等) アクティブになってないBookからアクティブになっているBookにコピーするようにしたいのですが。 宜しくお願いします。

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

  • ベストアンサー
  • mabibobi
  • ベストアンサー率50% (1/2)
回答No.2

次の方法はどうでしょうか? For Each w In Workbooks If w.Name <> ThisWorkbook.Name Then (1) a = ThisWorkbook.Name (2) b = w.Name       (3)    End If Next w Windows(b).Activate Sheets("sheet1").Activate Range("A1:J1").Select Selection.Copy Windows(a).Activate Sheets("sheet1").Activate Range("A1").Activate ActiveSheet.Paste Application.CutCopyMode = False (1)で現在開かれているBookを取得します (コピー元とコピー先と想定していますが…) (2)でアクティブなブックの名前を取得します。 (3)で非アクティブなブックの名前を取得します。 その後の処理はコピー&ペースト処理になります…。

その他の回答 (1)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

X="Book1.xls" Y="Book2.xls" Workbooks(X).Worksheets(1).Range("A1:A10").Copy Workbooks(Y).Worksheets(1).Range("A1").PasteSpecial 単純には上記のようになります。関係するBookがアクティブかアクティブでないかはActive*などを使わない限り、関係ありません。 でここでファイル名が動的になるということですよね? その場合はファイル名の部分を変数にして、どうにかしてその部分に取得した値を設定すればよいです。 ・単純にInputBOXとか使っても良いし、どこかのセルに書かれている値を読み込んでも良いし  例:X=InputBOX("参照元のエクセルファイル名を指定") ・現在開かれているエクセルファイルのファイル名を取得させても良いし

関連するQ&A