none
VBA ページ設定…拡大/縮小率を取得 RRS feed

  • 質問

  • 環境:Windows10-Excel2016
    課題:ページ設定…拡大/縮小率を取得するコードをご教授よろしくお願いいたします。

    参考:自己流で次のコードを試しては見たのですが、
    拡大縮小率は、100%の値しか取得(表示)できません!?
    参考:下記の★示し行でブレークすれば、目的の縮小率が取得(表示)できるのですが、これでは実運用できません。

    Sub 拡大縮小率を求める()
        'ワークシート内には、1頁に収まらないデータが有るとします。
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        Application.PrintCommunication = True
        
        Application.PrintCommunication = False '←★ブレイクポイント設定(デバッグ時)
        With ActiveSheet.PageSetup
            .FitToPagesWide = False
            .FitToPagesTall = False
        End With
        Application.PrintCommunication = True
    '   ExecuteExcel4Macro "Page.Setup(,,,,,,,,,,,,{#N/A,#N/A})" '←FitToPagesTall/FitToPagesWideを無効
        
        Debug.Print ActiveSheet.PageSetup.Zoom & "%" '←★目的:縮小率を取得(表示)したい
    End Sub

    sakuraxx




    • 編集済み sakuraxx 2017年2月28日 4:50 質問文を誤認しないように加筆修正しました。
    2017年2月27日 11:38

回答

  • こんな?

    Sub 拡大縮小率を求める()
    
        'ワークシート内には、1頁に収まらないデータが有るとします。
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        Application.PrintCommunication = True
        
        
        Dim w As Window
        Dim v As XlWindowView
        Set w = ActiveWorkbook.Windows(1)
        v = w.View
        w.View = xlPageLayoutView
        
        Application.PrintCommunication = False '←★ブレイクポイント設定
        With ActiveSheet.PageSetup
            .FitToPagesWide = False
            .FitToPagesTall = False
        End With
        Application.PrintCommunication = True
    '   ExecuteExcel4Macro "Page.Setup(,,,,,,,,,,,,{#N/A,#N/A})" '←FitToPagesTall/FitToPagesWideを無効
    
        w.View = v
        
        Debug.Print ActiveSheet.PageSetup.Zoom & "%" '←★拡大縮小率を表示
    End Sub
    #DoEventsでもいけるっぽい

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク sakuraxx 2017年3月1日 16:11
    2017年2月27日 12:09

すべての返信

  • こんな?

    Sub 拡大縮小率を求める()
    
        'ワークシート内には、1頁に収まらないデータが有るとします。
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        Application.PrintCommunication = True
        
        
        Dim w As Window
        Dim v As XlWindowView
        Set w = ActiveWorkbook.Windows(1)
        v = w.View
        w.View = xlPageLayoutView
        
        Application.PrintCommunication = False '←★ブレイクポイント設定
        With ActiveSheet.PageSetup
            .FitToPagesWide = False
            .FitToPagesTall = False
        End With
        Application.PrintCommunication = True
    '   ExecuteExcel4Macro "Page.Setup(,,,,,,,,,,,,{#N/A,#N/A})" '←FitToPagesTall/FitToPagesWideを無効
    
        w.View = v
        
        Debug.Print ActiveSheet.PageSetup.Zoom & "%" '←★拡大縮小率を表示
    End Sub
    #DoEventsでもいけるっぽい

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク sakuraxx 2017年3月1日 16:11
    2017年2月27日 12:09

  • gekkaさん、ご教授ありがとうございました。
    早速試行させて頂きましたが、拡大縮小率は100%としか表示されません…当初は駄目かと思っていましたが、
    原因は印刷範囲を設定していたためでした、この印刷範囲の設定を解除すれば成功しました。
    お陰様で課題は解決しました。。。感謝。。。
    • 編集済み sakuraxx 2017年3月1日 16:10
    2017年2月27日 16:08