• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロでシートのコピー)

エクセルマクロでシートのコピーする方法とは?

このQ&Aのポイント
  • エクセル2000でマクロを使用して、異なるブック間でシートのコピーを行いたい場合、ブック名が都度変わるため困っているとのことです。
  • 具体的には、Workbook A に a、b、c の3つのシートがあり、Workbook B に f、g、h の3つのシートがあります。Workbook A の Sheet a を Workbook B の Sheet h の前にコピーしたいという要件です。
  • ブック間の移動は ActiveWindow.ActivateNext などで行っていますが、シートのコピーの方法が分からないのでアドバイスをお願いします。

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

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

#01です。補足していただいた2つの条件 >コピー元・コピー先の2つのWorkbookが開いていて >一方のWorkbookの1番目のシートをもう一方のWorkbookの3番目のシートの前にコピー でマクロを書いてみました。マクロ実行時点でactiveなブックをコピー元としています。期待するものとは違うかもしれませんが、参考程度にはなると思います。 Sub Macro1() Dim wb, myBk As Workbook Dim cnt As Integer For Each wb In Workbooks   If wb.Name <> "PERSONAL.XLS" Then     cnt = cnt + 1   End If Next wb If cnt = 2 Then   Set myBk = ActiveWorkbook   For Each wb In Workbooks     If wb.Name <> "PERSONAL.XLS" And wb.Name <> myBk.Name Then       myBk.Sheets(1).Copy Before:=Wb.Sheets(3)     End If   Next wb Else   MsgBox "ブックが3つ以上開いているのでコピー先ブックを" & Chr(10) & _       "特定できません。処理を終わります" End If End Sub

char0078
質問者

お礼

おー、出来ました。ありがとうございます。 変数の設定とか分からない行がいくつかあるので また勉強していきます。 分からないままに質問したらダメだってこともよく分かりました。 いつもありがとうございます。

その他の回答 (1)

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

>いくつかWorkbookが開いている状態で、シートのコピーを行うのですが これはどう回答すればよいのでしょう。何がその都度変更されるか明示されていないので、回答するにも悩んでしまいます >Workbook"A" の Sheet("a") を Workbook"B" の Sheet("h") の前にコピー もしコピー元のシートが「Workbook"A" の Sheet("a")」と決まっており、コピー先のブックである「Workbook"B"」が変わる可能性があるなら、コピー先のシートを手操作で選択してから  Workbook("A.xls").Sheets("A").Copy before:=Activesheet でもよいと思います でも「コピー元のシート」が特定できない場合(Workbook"C"になったり、シートがWorksheets("b")になったりする場合)は上記のようなマクロでは実現できません もう少し「何が変わって何は変わらない」と「どうやって変わるターゲット(ブック、シート)を取得すればよいか」を説明していただかないと、期待する回答は得られないと思いますよ

char0078
質問者

補足

言われるとおり、自分もちょっと混乱しています。 >でも「コピー元のシート」が特定できない場合(Workbook"C"になったり、シートがWorksheets("b")になったりする場合)は >上記のようなマクロでは実現できません まさにその状況です。コピー元・コピー先の2つのWorkbookが開いていて、共にWorkbook名が特定できない状態です(変化します)。 この状態で一方のWorkbookの1番目のシートをもう一方のWorkbookの3番目のシートの前にコピーしたいのです。 分かりづらくて申し訳ないのですが、お願いします。

関連するQ&A