- 「マクロの記録」機能の使い方
- ほぼノーコードでマクロを作り、文書作成の時間短縮に
- マクロは一度設定すればどの文書でも使える
マクロといえば、「Excelで活用して時間短縮」というを印象が強いですが、じつはWordでも活用の可能性があります。
この記事では、wordで「マクロの記録」機能を活用し汎用マクロを作成してアドインっぽく使う方法を紹介します。
完成品
この記事で作るマクロの完成品です。
このアニメーションのように、wordにオリジナルのリボンタブとボタンを表示し、ワンボタンでページレイアウトを変更したり、図番号を挿入したりします。
マクロの記録使ってwordにコードを書いてもらう。
wordの「マクロの記録」機能を使って、Wordにコードを書いてもらいます。
開発タブが表示されていない方は、こちらの記事を参考に開発タブを表示させてください。
1.マクロの記録の開始
①「開発」→「マクロの記録」ボタンを押します。マクロの記録ウィンドウが開きます。
②「マクロの保存先」が「すべての文書(Normal.dotm)」となっていれば、そのままOKボタンを押します。※マクロ名は後で変更できます。
OKボタンを押した瞬間からマクロの記録が始まります。ここからは不必要な操作はしないでください。タブの切り替えだけは操作しても影響ありません。
2.記録したい操作を実施
ここでは図表番号を挿入します。
①「参考資料」 → 「図表番号」と押して、図表番号の挿入ウィンドウを表示させる
②図番号が「図 1」であることを確認して、そのまま「OK」をおすと図表番号が挿入される。
これで、図番号を挿入する動作がマクロとして記録されました。
3.記録の終了
「開発」タブ→「記録の終了」を押すとマクロの記録が終了する。
4.記録されたマクロの確認
「開発」タブ→「VisualBasic」を押すとVBEと呼ばれるマクロを扱う専用のウィンドウが表示されます。
ここまでが手順通りなら、左のツリー構造で「Normal」→「標準モジュール」→「NewMacros」が選択されており、右のウィンドウに「Sub Macro1」から始まるコードが書かれているはずです。
これが、マクロの記録機能でwordが書いてくれたコードです。
この記事では「マクロの記録」を使うだけなので、プログラムの詳細な説明はしませんが、最低限として以下の知識だけ紹介します。
- 「Sub ***()」から、「End Sub」までがひとまとまりのマクロ。このまとまりをメモ帳にペーストすれば、ほかのパソコンに渡すなども可能
- 「Sub ***()」の***の部分がマクロの名前、好きに書き換えてよし。
- 行頭が「’」になっており、緑色表示の行はコメント行。消しても動作に影響はない。
確認し終わったら、×ボタンで閉じてください。
マクロの動作確認
「開発」タブ→「マクロ」のボタンを押すと、マクロウィンドウが表示されます。
「Macro1」(マクロの名前)を選択して、「実行」を押すと、マクロ実行されます。
この記事の流れで作業していると、図番号が挿入されるはずです。
マクロをリボンに登録する。
レイアウト変更マクロをコピペ
マクロをリボンに登録し、ワンボタンで実行できるようにします。
一つだけボタン作っても寂しいので、こちらの記事で紹介しているマクロもついでにリボンに登録します。
再び「開発」→「VisualBasic」と押して、VBEを起動します。先ほどのコードの後に以下コードをペーストします。
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
貼り付けできたら、×ボタンで閉じてください。
「開発」タブ→「マクロ」を押すと、先ほどは「Macro1」だけであったものが、4つに増えているはずです。
リボンに登録
リボンに登録の方法もこちらの記事で紹介しています。
- Macro1
- To_A4_1dan
- To_A3_2dan
- To_A3_1dan
の4とも登録すれば、冒頭で紹介した完成品と同じになります。
Wordマクロは基本的に汎用
通常、Excelでマクロを作成すると、個々の「ファイル」にマクロが保存されます。
マクロをとっておこうと思うと、ファイルをそのままとっておく必要があります。
対して、Wordのマクロは通常、文書のテンプレートに保存されます。個々のファイルには保存されず、Wordというソフト自体に保存されるようなイメージです。
この記事作ったマクロは、マクロを作ったPCで開けば、どのWordファイルでも利用することができます。
wordでよく使う操作がある場合は、その操作を一度「マクロ記録」しておけば以降はおおきな時間短縮になります。
コメント