みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル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が存在しないとエラーになってしまう。

お願いします。

投稿日時 - 2002-07-25 11:27:59

QNo.322009

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんにちは。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)

という風に

では。

投稿日時 - 2002-07-25 14:36:43

ANo.2

質問にあるコードの意味あいがよく分かりませんが・・・

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) のようにします。

投稿日時 - 2002-07-25 13:22:20

ANo.1

>Sheets.Copy after:=Workbooks("book1").Sheets(2)
ココで、名前を固定してるのが問題なので新しく追加されたブックを指定するようにしましょう。
以下のようにしたらどうですか。

Sheets.Copy after:=Workbooks(Workbooks.Count).Sheets(2)

ご期待通りの結果が得られれば、幸いです。

投稿日時 - 2002-07-25 12:45:03

あなたにオススメの質問