- 締切済み
エクセル2000のマクロについて再び
新しいブックを作りさらに他のブックで作成されているシートをコピーして移動するというマクロを作ります。この時、新しく作ったブックの名前がBook1にならないとその時点でマクロのエラーになりなってしまいますが、たまにBook2になってしまうときがあります。必ずBook1になると指定することはできないのでしょうか。 Sheets(Array("sheet1", "sheet2", "sheet3")).Select Sheets(Array("sheet1", "sheet2", "sheet3")).Copy →新しいシートを作成 Workbooks.Open Filename:="C:xxx\○○\△△.xls" Sheets.Copy after:=Workbooks("book1").Sheets(2) →ここで、Book1が存在しないとエラーになってしまう。 お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 2行目で新規作成されたシートをいったん保存したらどうですか。 Sheets(Array("sheet1", "sheet2", "sheet3")).Select ActiveWindow.SelectedSheets.Copy ActiveWorkbook.SaveAs fileName:=(ファイルAフルパス) Workbooks.Open Filename:="C:xxx\○○\△△.xls" Worksheets.Select ActiveWindow.SelectedSheets.Copy after:=Workbooks(ファイルA).Sheets(2) という風に では。
- nishi6
- ベストアンサー率67% (869/1280)
質問にあるコードの意味あいがよく分かりませんが・・・ Dim newBookname As String '追加 : ↓ : Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy newBookname = ActiveWorkbook.Name '追加 : ↓ : Sheets.Copy after:=Workbooks(newBookname).Sheets(2) '修正 : のようにすれば、どんなBook名でも支障が無いはずです。 必ずBook1になるようにすると、Book名が重複してしまうでしょう。 新規Bookを作る場合、Workbooks.Add でもできますが・・・その場合も、作ったBook名を記憶し、 Sheets.Copy after:=Workbooks(newBookname).Sheets(2) のようにします。
- BlueRay
- ベストアンサー率45% (204/453)
>Sheets.Copy after:=Workbooks("book1").Sheets(2) ココで、名前を固定してるのが問題なので新しく追加されたブックを指定するようにしましょう。 以下のようにしたらどうですか。 Sheets.Copy after:=Workbooks(Workbooks.Count).Sheets(2) ご期待通りの結果が得られれば、幸いです。