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

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

対象:Word2007, Word2010, Word2013

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

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

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

VBA(Visual Basic for Applications)でどう書くのかを探している方による検索でしょうか。

[スポンサードリンク]

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

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

 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

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

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

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

アクティブドキュメントの印刷の向きを横にするには、以下のようなマクロでOKです。

Sub アクティブな文書を横向きにする()

 ActiveDocument.PageSetup.Orientation _
  = wdOrientLandscape

End Sub

PageSetupオブジェクトのOrientationプロパティが印刷の向きです。

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

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

開いている全文書を横向きにするサンプルマクロ

開いているすべての文書の印刷の向きを横にしたいのなら、以下のようなマクロです。


Sub 開いている全文書を横向きにする()

 Dim doc As Document

 For Each doc In Documents
  doc.PageSetup.Orientation = wdOrientLandscape
 Next doc

End Sub

開いているすべての文書に対してループを回して、
 For Each doc In Documents

それぞれの文書のPageSetup.OrientationプロパティをwdOrientLandscapeに設定しています。
  doc.PageSetup.Orientation = wdOrientLandscape

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

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

ページ設定の印刷の向きを横にする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を設定するというロジックにしていたはずなので、とても興味深いコードに感じます。

[スポンサードリンク]

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

TrackBack:1

TrackBack URL
Wordのマクロ記録ではIf文が作られることもある from インストラクターのネタ帳
Word(ワード)のマクロ記録機能では、If文が作られることもあります。
[スポンサードリンク]

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

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

検索

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

.