none
Excel2013VBAで印刷プレビュー画面を表示したとき、ページが切り替わらない RRS feed

  • 質問

  • Excel2013のVBAでコードを実行したとき、

    Excelの一部がグレーになるのでApplication.ScreenUpdating = Falseにしておくように

    とありましたが、

    その状態で印刷プレビュー画面を表示したとき

    複数ページあるはずなのに次ページに切り替わりません。最初のページのままです。

    実際はもう少しページ数があるはずなのですが、画面表示は10ページと出ています。


    次ページのボタンはアクティブになっており、押せる状態になっております。

    回避して、ページを切り替えるようにできる方法はあるのでしょうか?

    2013年5月31日 9:03

すべての返信

  • VBAで単純なコードを作成しましたが、

    同じ結果になりました。

    Application.ScreenUpdating = falseのままで

    対処方法あるのでしょうか?

    Sub test()
      Dim i As Integer
     
      Application.ScreenUpdating = False
      For i = 1 To 100
        Sheet1.Cells(i, 1).Value = i
      Next
     
      ActiveSheet.PrintPreview
     
    End Sub

    2013年6月3日 0:36
  • 無理です。
    画面更新を止めているときは、まともな操作は一切出来ないと思ってください。

    そもそも
    Application.ScreenUpdating = False 自体が
    他の方法を色々やってみた上で、どうしても要求する速度が出ないときに
    苦肉の策として行う代物です。

    推奨しているサイトがあるようですが、鵜呑みにしないようにしましょう。
    2013年6月3日 1:42
  • Excel2000では、同じコードで問題なく実行できました。

    Excel2013では、Application.ScreenUpdateing =Trueにすれば

    プレビュー画面がグレーになるし

    Application.ScreenUpdateing =Falseにすれば

    上記に書いたようにページが切り替わらないし、

    正常にプレビュー画面が使えたことがありません。

    2013年6月3日 2:33
  • 回答いただいたhihijijiさん、ありがとうございました。

    この件、自己解決しました。

    VBやDelphiなど、他の実行ファイルで次のようにOLEオブジェクトを作成して

    VBAのマクロを動かして印刷プレビューしたときにグレー画面になっていました。

    ------------------------------------------------------------------------

    VBまたはDelphi側コード   

    Dim ExcelApp    As Object

        Set ExcelApp = CreateObject("excel.application")     ' Excelの起動
        ExcelApp.application.Visible = False                        ' Excelの非表示
        ExcelApp.application.Workbooks.Open FileName:=ファイルパス
        ExcelApp.application.Run                                       '' マクロ実行

    -------------------------------------------------------------------------

    Excel2013のVBA側ではもともと次のコードでした。

     Application.ScreenUpdating = True

     Application.Visible = True

     ActiveSheet.PrintPreview

    ------------------------------------------------------------------------

    Excl2013のVBA側を修正して、Application.ScreenUpdatingと  Application.Visibleの

    順番を入れ替えるだけで、正常にプレビュー画面が使えるようになりました。

    修正後のコード

     Application.Visible = True

     Application.ScreenUpdating = True

     ActiveSheet.PrintPreview

    ------------------------------------------------------------------------

    Excelのバージョンがあがることで

    コードを見直す必要があることがわかりました。

    ありがとうございました。

     

    • 回答の候補に設定 hihijiji 2013年6月4日 3:33
    2013年6月4日 3:01