プロが教えるわが家の防犯対策術!

コピー&ペーストと印刷設定について高速化を目指したいので教えていただけますでしょうか。
dim については省略させて頂きました


まず
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.PrintCommunication = False
Application.EnableEvents = False

を設定しました。

Sheets("設定").Range("$P$1:$AE$292").Copy
Range("A1").Select
ActiveSheet.Paste
Range("$A$1:$P$292").PasteSpecial Paste:=xlPasteColumnWidths '列幅コピー
Range("$A$1:$P$292").PasteSpecial Paste:=xlPasteFormats '書式コピー
Application.CutCopyMode = False
ActiveSheet.Range("B2").Value = wdate


With Worksheets(sh.Name).PageSetup


.Orientation = xlLandscape '印刷設定の向きを横向き(Landscape)に設定
.FitToPagesTall = False'印刷範囲の横を1ページ分で収める
.FitToPagesWide = 1'印刷範囲の横を1ページ分で収める
.Zoom = False'拡大縮小なし
.PrintArea = "$A$1:$P$292"'印刷範囲を$A$1:$H$292にする
.PrintTitleRows = "$1:$7"'印刷タイトル行を設定する
.HeaderMargin = Application.CentimetersToPoints(0) 'フッター
.FooterMargin = Application.CentimetersToPoints(0)'ヘッダー
.CenterHorizontally = True '水平化
.CenterVertically = False '垂直なし


End With

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.PrintCommunication = True
Application.EnableEvents = True

と今の状況はこうなっております。
作成完了までの待機が長いので、高速化についてご教授願えないでしょうか。
よろしくお願いいたします

質問者からの補足コメント

  • どう思う?

    CPUの使用率最大30%
    メモリーの消費量はこれも33%ぐらいです。
    この質問文には書いていないところがありまして、
    For next 文の中に
    With 
    For
    If
    各文が入れ子ではなく並んであったので、多いと思っておりました。
    それで中でもコピペとwith文の印刷範囲の統合ができたら、コピペも配列というものになれたら、と希望した次第です。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/01/05 00:01

A 回答 (2件)

こいつの高速化方法その3を試してみて下さい。


https://officedic.com/excel-vba-copy-paste-highs …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お勧めするだけあって、とても速いことがわかりました。
ここから、別シートに転記することができるよう頑張ります。

お礼日時:2024/01/05 18:58

実行をしているときに、CPUの使用率やメモリーの消費量は確認しているでしょうか。



CPUの使用率が100%に達しているなら処理そのものが重いからなので、より高速なCPUを搭載したものに変える必要がありますし、メモリーの空き容量がなくなっているなら仮想メモリーへのアクセスで遅くなっているので、メモリーを増設するしか対策はありません。

無駄な分岐処理や繰り返し処理がないので、その部分での最適化もできませんね。
この回答への補足あり
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A