Home » ワードマクロ・Word VBAの使い方 » ページ設定・PageSetup » Word VBAで印刷の向きを横にする

対象:Word2007, Word2010, Word2013

「word 2007 vba ページ設定 横」
という検索で、このサイト『インストラクターのネタ帳』へアクセスがあることに気づきました。

[ページ設定]ダイアログ-[余白]タブ-[印刷の向き]欄で、「横」を指定する操作を、

ページ設定の印刷の向きを横にするWordマクロ

VBAでどう書けばいいのかを探していた方による検索でしょうか。

[スポンサードリンク]

ページ設定をマクロ記録した場合

[ページ設定]ダイアログで印刷の向きを横にする操作を、マクロ記録してみると以下のようなコードが作られます。

 With ActiveDocument.PageSetup
  .LineNumbering.Active = False
  .Orientation = wdOrientLandscape
  .TopMargin = MillimetersToPoints(30)
  .BottomMargin = MillimetersToPoints(30)
  .LeftMargin = MillimetersToPoints(30)
  .RightMargin = MillimetersToPoints(35)
  .Gutter = MillimetersToPoints(0)
  .HeaderDistance = MillimetersToPoints(15)
  .FooterDistance = MillimetersToPoints(17.5)
  .PageWidth = MillimetersToPoints(297)
  .PageHeight = MillimetersToPoints(210)
  .FirstPageTray = wdPrinterDefaultBin
  .OtherPagesTray = wdPrinterDefaultBin
  .SectionStart = wdSectionNewPage
  .OddAndEvenPagesHeaderFooter = False
  .DifferentFirstPageHeaderFooter = False
  .VerticalAlignment = wdAlignVerticalTop
  .SuppressEndnotes = False
  .MirrorMargins = False
  .TwoPagesOnOne = False
  .BookFoldPrinting = False
  .BookFoldRevPrinting = False
  .BookFoldPrintingSheets = 1
  .GutterPos = wdGutterPosLeft
  .LayoutMode = wdLayoutModeLineGrid
 End With

見慣れないと、なかなか威圧感のあるコードです。

[ページ設定]ダイアログで設定できる項目がすべてコード化されるために、このような状態になってしまいます。

アクティブな文書を横向きにするサンプルマクロ

アクティブドキュメントの印刷の向きを横にするだけならば、以下のようなコードでOKです。

Sub アクティブな文書を横向きにする()
 ActiveDocument.PageSetup.Orientation = wdOrientLandscape
End Sub

PageSetupオブジェクトに用意されているOrientationプロパティを使うと、印刷の向きを取得・設定できます。

先のマクロ記録でできたコードなら、はじめのほうにある
  .Orientation = wdOrientLandscape
が、印刷の向きを指定している箇所です。

PageSetupオブジェクトのOrientationプロパティに、上記のように定数wdOrientLandscapeを指定すれば横向きになり、定数wdOrientPortraitを指定した場合は縦向きになります。

設定対象をこれ以降にした場合

[ページ設定]ダイアログには[設定対象]という項目があり、設定をどの範囲に及ぼすのかを指定できます。

ページ設定の印刷の向きを横にするWordマクロ

この中に「これ以降」という選択肢があるので、これを選んでマクロ記録してみると、なかなか興味深いコードが作られました。

Orientationプロパティだけを切り出すと、以下のようなコードです。

 With ActiveDocument.Range(Start:=Selection.Start, End:=ActiveDocument. _
  Content.End).PageSetup
  .Orientation = wdOrientLandscape
 End With

Withキーワードを削除して、改行位置を整理すると、以下のようなコードになります。

 ActiveDocument _
  .Range( _
   Start:=Selection.Start, _
   End:=ActiveDocument.Content.End) _
    .PageSetup.Orientation = wdOrientLandscape

DocumentオブジェクトのRangeメソッドの、
第1引数StartにSelection.Startとカーソルのある位置を指定し、
第2引数EndにActiveDocument.Content.Endとアクティブ文書の最後を指定することで、
「これ以降」という指示にしているわけです。

ページ設定の印刷の向きを横にするWordマクロ

私が自分でマクロを作るとしたら、カーソルのあるセクションから、最後のセクションまでループを回して、各セクションのPageSetup.OrientationプロパティにwdOrientLandscapeを設定するというロジックにしていたはずなので、とても興味深いコードに感じます。

最終更新日時:2020-11-25 10:35

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » ページ設定・PageSetup » Word VBAで印刷の向きを横にする

「ページ設定・PageSetup」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.