- ベストアンサー
ワークシートの印刷設定をコピーする方法について
- ワークシートの印刷設定をコピーするためのマクロを作成しています。
- 現在のコードでは、印刷設定が正しく移植されていないため、エラーが発生しています。
- より簡単な方法があるかどうか、アドバイスをいただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「雛形シートの××をコピーする」という考え方は、やめましょう。 「雛形シートのコピーに××をコピーする」が正しいです。 これで、考え直してみてください。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
ファイルーページ設定にあたるものは、シートごとに設定項目を決めて保存できる、シートオブジェクトに対するメソッド・プロパティであるようだ。 今後はやっていることが、どういうオブジェクトに対するものであるか勉強するようにすべきです。 だからシートなどの「すべてを含めて写す」のがコピーなので、シートのコピーをすれば良い。 そしてすぐ自己流でコードを作るのでなく、シートの(タブ部で右クリックから始まる)「移動またはコピー」の操作をしてマクロの記録を採って勉強するのが良いと思う。 Set ActiveSheet.PageSetup=PS のような場合、多数ある項目を1つの代入式で済むかどうかは、その都度勉強しないとならない。不可能のことがほとんど。コードで.Copyが出来るかどうかも、各オブジェクトの個別論だと思う。
補足
解答、ありがとうございます。返事が遅くなり申し訳ありません。 yorozu_yaさんへとあわせて補足させていただきます。 Copyメソッドでは、コピー場所に既存シートの前または後ろを指定することができますが、既存のシートそのものを指定することは出来ず、このメソッドを実行すると、指定した場所に新規シートが挿入されて、そのシートにペーストが行われるようです。 既存シートに雛形シートの諸々、印刷設定まで含めて、をコピーしたい場合はどうすればいいんでしょう。 Cells.Copyで取りあえずセルをコピーした後、印刷設定はそのページの.PageSetup下の各プロパティを一つづつ処理していくしかないのでしょうか。
- yorozu_ya
- ベストアンサー率54% (76/140)
Cellsをコピーするのではなく、Sheetをコピーしましょう。 Sheets("雛形シート").Copy After:=Sheets("他のシート")
お礼
解答、ありがとうございます。返事が遅くなってすみません。 imogasiさんの方にまとめて補足を書かせていただきます。 ありがとうございます。
お礼
お世話になります。 最初に私が作ったコードと、前回の回答を参考に改良したコードで、ベンチマークを計ってみました。100枚のシートをコピーするものです。最初のコードでは、雛形シートの印刷設定を8項目コピーしています。 結果は、 最初のコード 60秒 改良したコード 22秒 でした。 どうもありがとうございました。
補足
早速のお返事をありがとうございます。 >「雛形シートのコピーに××をコピーする」が正しいです。 既存シートで残したいのはシート名だけですので、 SheetName=(既存シート).Name とでもして、次に既存シートの前か後ろに雛形ファイルをコピー。 その後、既存シートを削除して、雛形ファイルからコピーした新規シートの名前にSheetNameを代入するということでしょうか。こちらの方が、私のやり方よりもコードが簡単で良いですね。 でもシートなんて大きなオブジェクトを新規挿入したり削除したりというのは結構重たくなりそうです。まあ、数枚のシートでそれをやったからといって、プログラムが全然重たくなるということでもないですが。 もっと良い方法があるのではないだろうかという私の疑問にお気を悪くされたら申し訳ないのですが、当初私が書いたコードがあまりにも冗長だったもので、雛形シートの使いまわしなんて良くある作業だから絶対に簡便な記述方法が他にあるはずだという思いつきから、今回質問させていただきました。 だからどうしてももっと良い方法があるのではないだろうかという観念に囚われてしまうのです。申し訳ありません。