- マクロの知識不要で、コピペで実践できる。
- WordでVBAを使う下準備
- 実務的 用紙サイズのA4⇔A3を切り替えるマクロ作成して、をアドイン的に活用
この記事では、Wordの用紙サイズをA4⇔A3に瞬時に切り替えるマクロを紹介します。
一般的には、マクロやVBAというとExcelで使うものという印象が強いかと思います。
でも、実はWordでもマクロやVBAは使えますし、使いだすと非常に便利で時短になります。この記事では、コピペで使える実用的なマクロとして、用紙サイズのA4⇔A3を瞬時に切り替えるマクロを紹介します。
完成品はこのようになります。
それでは作り方とコードを紹介します。
開発タブ表示とマクロの動作確認
ある程度VBAに教養のある人には常識ですが、一応解説します。
wordの初期設定ではVBE(VisualBasicEditer)を表示するためのボタンが表示されていません。Wordの設定を変更し、ボタンを表示します。
wordの左上の「ファイル」タブ→「オプション」と押してください。下のような「Wordのオプション」が表示されてたら、「リボンのユーザー設定」→「開発」にチェック→「OK」と操作してください。
リボンに「開発」タブが表示されます。
次に、「開発」タブ→「VisualBasic」と押してください。専用のウィンドウでVBEが起動します。
VBEが起動したら、「挿入」→「標準モジュール」と選択してください。「Normal」の配下に「Module1」が挿入されます。
次に、本当にマクロが動くか、お試しにコードを入力してみます。
「Module1」を押して、表示された右側のウィンドウに下記のコードを入力してください。入力が終了したら、VBEは×ボタンで閉じです。
Option Explicit
Sub Test()
MsgBox ("マクロが動いた!!")
End Sub
wordの画面に戻ったら、「開発」タブ→「マクロ」→「test」と押してください。先ほど記入したマクロが実行され、小さなメッセージボックスるが表示されます。
これで、wordでマクロを利用する最低限の設定が完了しました。
ただしこれだけでは、マクロが「動くだけ」でなんの利便性もありません。次からが、この記事の本題である用紙サイズのA4⇔A3を瞬時に切り替えるマクロです。
完成コードコピペして利用
以下のコードが完成品のマクロです。このままコピーして、「Module1」にペーストしてください。
Option Explicit
Sub To_A3_2dan()
'Undoのためのコード、以下の3行を入れないとこのマクロ実行後にUndoできない。
Dim ur As Word.UndoRecord 'UndoRecordオブジェクトを定義
Set ur = Application.UndoRecord
ur.StartCustomRecord "My Custom Undo"
'2段組みに
Application.ScreenUpdating = False
If ActiveDocument.ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveDocument.ActiveWindow.Panes(2).Close
End If
If ActiveDocument.ActiveWindow.ActivePane.View.Type <> wdPrintView Then
ActiveDocument.ActiveWindow.ActivePane.View.Type = wdPrintView
End If
With Selection.PageSetup.TextColumns
.SetCount NumColumns:=2
.EvenlySpaced = True
.LineBetween = False
End With
'横長A3用紙のサイズに
With Selection.PageSetup
.Orientation = wdOrientLandscape '印刷の横長or縦長をしていする。これを入れないと印刷がおかしくなる。
.TopMargin = MillimetersToPoints(20)
.BottomMargin = MillimetersToPoints(20)
.LeftMargin = MillimetersToPoints(25)
.RightMargin = MillimetersToPoints(25)
.HeaderDistance = MillimetersToPoints(7)
.FooterDistance = MillimetersToPoints(10)
.Gutter = MillimetersToPoints(0)
.FooterDistance = MillimetersToPoints(12.7)
.PageWidth = MillimetersToPoints(419.9)
.PageHeight = MillimetersToPoints(297)
.LayoutMode = wdLayoutModeGrid
End With
Application.ScreenUpdating = True
ur.EndCustomRecord 'Undoレコードここまで
End Sub
Sub To_A3_1dan()
'Undoのためのコード、以下の3行を入れないとこのマクロ実行後にUndoできない。
Dim ur As Word.UndoRecord
Set ur = Application.UndoRecord
ur.StartCustomRecord "My Custom Undo"
'1段組みに
Application.ScreenUpdating = False
If ActiveDocument.ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveDocument.ActiveWindow.Panes(2).Close
End If
If ActiveDocument.ActiveWindow.ActivePane.View.Type <> wdPrintView Then
ActiveDocument.ActiveWindow.ActivePane.View.Type = wdPrintView
End If
With Selection.PageSetup.TextColumns
.SetCount NumColumns:=1
.EvenlySpaced = True
.LineBetween = False
End With
'横長A3用紙のサイズに
With Selection.PageSetup
.Orientation = wdOrientLandscape '印刷の横長or縦長をしていする。これを入れないと印刷がおかしくなる。
.TopMargin = MillimetersToPoints(20)
.BottomMargin = MillimetersToPoints(20)
.LeftMargin = MillimetersToPoints(25)
.RightMargin = MillimetersToPoints(25)
.HeaderDistance = MillimetersToPoints(7)
.FooterDistance = MillimetersToPoints(10)
.Gutter = MillimetersToPoints(0)
.PageWidth = MillimetersToPoints(419.9)
.PageHeight = MillimetersToPoints(297)
End With
Application.ScreenUpdating = True
ur.EndCustomRecord 'Undoレコードここまで
End Sub
Sub To_A4_1dan()
'Undoのためのコード、以下の3行を入れないとこのマクロ実行後にUndoできない。
Dim ur As Word.UndoRecord
Set ur = Application.UndoRecord
ur.StartCustomRecord "My Custom Undo"
'1段組みに
Application.ScreenUpdating = False
If ActiveDocument.ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveDocument.ActiveWindow.Panes(2).Close
End If
If ActiveDocument.ActiveWindow.ActivePane.View.Type <> wdPrintView Then
ActiveDocument.ActiveWindow.ActivePane.View.Type = wdPrintView
End If
With Selection.PageSetup.TextColumns
.SetCount NumColumns:=1
.EvenlySpaced = True
.LineBetween = False
End With
'縦長A4用紙のサイズに
With Selection.PageSetup
.Orientation = wdOrientPortrait '印刷の横長or縦長をしていする。これを入れないと印刷がおかしくなる。
.TopMargin = MillimetersToPoints(20)
.BottomMargin = MillimetersToPoints(20)
.LeftMargin = MillimetersToPoints(25)
.RightMargin = MillimetersToPoints(25)
.HeaderDistance = MillimetersToPoints(7)
.FooterDistance = MillimetersToPoints(10)
.Gutter = MillimetersToPoints(0)
.PageWidth = MillimetersToPoints(210)
.PageHeight = MillimetersToPoints(297)
End With
Application.ScreenUpdating = True
ur.EndCustomRecord 'Undoレコードここまで
End Sub
「開発」タブ→「マクロ」に表示されるマクロを実行すると、用紙サイズが簡単に変更できるようになります。
この時点でwordは閉じてしまって大丈夫です。上書き保存も不要です。
WordのVBAは基本的に、一度作ると、別のファイルを開いたときにもマクロが残っています。つまり、一度マクロを作成すると、そのパソコンで開く、どのWordファイルでもマクロを実行することができます。
これは、Excelのマクロと大きく違うところで、Wordマクロの利点です。
(解説)ExcelVBAとWordVBAの使い勝手の違い → 別記事へまとめる予定
リボンに登録してアドインっぽく使う。
前章の「完成コードコピペして利用」の時点で、そこそこ実用的なマクロとなっているかと思います。せっかくなのでもうひと手間加えて、さらに使いやすくしておきましょう。
「Wordのオプション」→「リボンのユーザー設定」から新しいタブを作成して、作成したマクロをリボンに登録していきます。
- 「新しいタブ」 → 「名前の変更」 → (任意のタブ名)
- 「新しいグループ」 → 「名前の変更」 → (任意のグループ名)
タブとグループを増やします。今回は両方とも「オリジナルマクロ」という名前にしておきますが、もちろん好きなもので結構です。
「コマンド選択」 → 「マクロ」 と選択し、作成したマクロを追加していきます。
名前変更から、マクロの名前とアイコンを任意に決定できます。
マクロ名は「A4_一段」「A3_一段」「A3_二段」としていますが、これも好きな名前で結構です。アイコンも何を選んでもOKです。
これで、エクセルのリボンに作成したタブとグループが表示されます。冒頭で解説したように一瞬でWordのレイアウトのA3⇔A4を切り替えることができるようになります。
WordでVBAを活用するということ。
この記事では、Wordで用紙サイズのA4⇔A3を瞬時に切り替えるマクロを紹介しました。これをリボンに登録しておくだけでも、文書を作る際にかなり時短になります。
VBAコードはコピペですぐ使えるものですが、もちろん自分でコードを書くことで、いろいろな機能をWordに追加できます。
WordVBAはExcelVBAと違い、ネットで検索しても情報が少なく、難易度が高いように感じますが、そんなことはありません。この記事では紹介していませんが、Wordに備わっている「マクロの記録」機能が優秀なので、やりだすと意外に簡単です。
コメント