• ベストアンサー

マクロで別ファイルのシートコピーして、元ファイルに貼り付けを行なうには

VBA初心者です。こんなマクロを作りたいのですが・・・ (1) Aファイルのαシートから操作する。 (2) Bファイルを開いて、βシートの一部をコピー (3) Bファイルを閉じる(保存なし・各種アラートなし) (4) Aファイルに再び戻り、αシートに貼り付けする といったものなのですが、 (2)まではできたのですが、(3)からうまくいかず、勝手に新規ファイルにβシートがコピーされてしまいます。 是非ご教授ください。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

A No.1とかぶっちゃいましたが、サービスでコード付ということで投稿させていただきます。 (1) Aファイル(マクロを記述してある)から操作する。 (2) Bファイルを開く (3) Bファイルのβシートの一部をコピーして、Aファイルのαシートに貼り付けする (4) Bファイルを閉じる(保存なし・各種アラートなし) というワークフローにすれば、 (3)は、 Sub test() Workbooks("Bファイル.xls").Sheets("β").Range("A1:B4").Copy ThisWorkbook.Sheets("α").Range("a1") End Sub で実現できます。(複写先範囲は適当にいじって下さい)

backknee
質問者

お礼

ありがとうございます うまく実現できました。 本当に助かりました

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

例えばこんなマクロでもできます Sub Macro1() Dim wb As Workbook Dim psw As Boolean Dim myPath As String  myPath = ThisWorkbook.path  For Each wb In Workbooks 'Bファイルが既に開いているか確認   If wb.Name = "Bファイル.xls" Then    psw = True    Exit For   End If  Next wb  If psw = False Then   Workbooks.Open (myPath & "\Bファイル.xls")  End If  Workbooks("Bファイル.xls").Sheets("βシート").Range("A1:A10").Copy  Workbooks("Bファイル.xls").Close False  Range("A1").Select  ActiveSheet.Paste End Sub ただ複数のシートを操作する場合、  Range("A1").Select のような箇所は  Workbooks("Aブック.xls").Sheets("αシート").Range("A1").Select のようにオブジェクトを明示する方が良いと思います。

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

(3)と(4)を入替えてみては? というか (1) Aファイルのαシートから操作する。 (2) Bファイルを開いて、βシートの一部をコピーしAファイルのαシートに貼り付け (3) Bファイルを閉じる(保存なし・各種アラートなし) でしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A