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

 Excel2002で帳票印刷の処理を作成しました。
該当ブック(自身.xls)オープンすると最初にVBAにより帳票レイアウトの初期化を行います。(原紙.xlsをオープンし、自身のシートに貼り付けます。)この初期化の貼り付け処理が"原紙"と"自身"のシートを交互にアクティブにしている為、画面がちらついて、とても見苦しい状態です。
Sub 帳票初期化()
 Workbook.Open Filename="F:\原紙.xls"
 Sheets("帳票1").Select
 Cells.Select
 Selection.Copy
 Windows("自身.xls").Activate
 Sheets("帳票1").Select
 Cells.Select
 ActiveSheet.Paste

 Windows("原紙.xls").Activate
 Sheets("帳票2").Select
 Cells.Select
 Selection.Copy
 ・・・・・・・・・(以下同様処理を8帳票程)
 Windows("原紙.xls").Activate
 ActiveWindow.Close
 Windows("自身.xls").Activate
End Sub (動作確認済み。手打鍵にて誤コマンドご容赦)

この処理を”お待ち下さい”画面等で実行中だけ見えない状態にする、又は画面より見えない形で行うにはどうすれば良いでしょうか。

A 回答 (3件)

画面がちらつくのを防ぐのにはこの構文が有効です。


Application.ScreenUpdating = False

多くの画面切り替えが発生する場合に、
その画面更新を抑止します。
解除する場合は明示的にtrueをセットするか、
マクロ実行終了後にリセットされます。

若干ですが処理速度も向上しますよ。
    • good
    • 0
この回答へのお礼

 スクリーンとかScreenで検索しては何故か空振りしていました。
思う様な処理(対策)が行えました。有難うございました。

お礼日時:2005/03/08 16:25

セルのコピーでなく シートのコピーはいかが?



Sub 原紙を8枚複写()
帳票file名 = "原紙"
複写枚数 = 8

Workbooks.Open Filename:=帳票file名
Workbooks(2).Sheets(1).Copy Before:=Workbooks(1).Sheets(1)
Workbooks(2).Close (False)

Workbooks(1).Sheets(1).Name = "帳票1"

For 枚数 = 2 To 複写枚数
Sheets(1).Copy Before:=Sheets(1)
Sheets(1).Name = "帳票" + CStr(枚数)
Next

End Sub
    • good
    • 0
この回答へのお礼

 回答有難うございます。
今回は貼り付け処理は既に確定している所で、勝手に変更をかけれないのです。
次回新規で作成する際に組み込ませて頂きたいと思います。

お礼日時:2005/03/08 16:39

>画面より見えない形で行うにはどうすれば?


 次の一行で、画面の更新を表示しないで、実行します。
Application.ScreenUpdating = False
 但し、終わって表示したい場合は、次の1行を入れて、表示出来るように、戻して下さい。
Application.ScreenUpdating = True
    • good
    • 0
この回答へのお礼

回答有難うございました。
使用させていただきました。

お礼日時:2005/03/08 16:47

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