- ベストアンサー
エクセルマクロでシートのコピーする方法とは?
- エクセル2000でマクロを使用して、異なるブック間でシートのコピーを行いたい場合、ブック名が都度変わるため困っているとのことです。
- 具体的には、Workbook A に a、b、c の3つのシートがあり、Workbook B に f、g、h の3つのシートがあります。Workbook A の Sheet a を Workbook B の Sheet h の前にコピーしたいという要件です。
- ブック間の移動は ActiveWindow.ActivateNext などで行っていますが、シートのコピーの方法が分からないのでアドバイスをお願いします。
- みんなの回答 (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
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
>いくつか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")になったりする場合)は上記のようなマクロでは実現できません もう少し「何が変わって何は変わらない」と「どうやって変わるターゲット(ブック、シート)を取得すればよいか」を説明していただかないと、期待する回答は得られないと思いますよ
補足
言われるとおり、自分もちょっと混乱しています。 >でも「コピー元のシート」が特定できない場合(Workbook"C"になったり、シートがWorksheets("b")になったりする場合)は >上記のようなマクロでは実現できません まさにその状況です。コピー元・コピー先の2つのWorkbookが開いていて、共にWorkbook名が特定できない状態です(変化します)。 この状態で一方のWorkbookの1番目のシートをもう一方のWorkbookの3番目のシートの前にコピーしたいのです。 分かりづらくて申し訳ないのですが、お願いします。
お礼
おー、出来ました。ありがとうございます。 変数の設定とか分からない行がいくつかあるので また勉強していきます。 分からないままに質問したらダメだってこともよく分かりました。 いつもありがとうございます。