トップ回答者
VBA ページ設定…拡大/縮小率を取得

質問
-
環境: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 質問文を誤認しないように加筆修正しました。
回答
-
こんな?
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
すべての返信
-
こんな?
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