⇒ その記事は、こちらをご覧ください。
「マクロ記録」は、ユーザーが行った操作をマクロに自動変換してくれる驚異的機能です。
文書中の文字列を選択したり、文字色を変えたり、といった操作が自動的にマクロに記録され、それを自由に再生できます。Wordのほとんどの操作を記録してくれるから便利です。
ただし、このように便利な機能・ツールではありますが、万能かというとそうでもありません。欠点と限界があるのです。
欠点【1】
デフォルト値が記録されてしまう。
次のマクロは、Word文書の最初の5文字を、26ポイントのゴシック体に変更する操作を、「マクロ記録」したものです。
リボンの「ホーム」タブの「フォント」ダイアログボックスから操作すると、このような長文のマクロコードが記録されます
Sub Macro1()
' Macro1 Macro
Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
With Selection.Font
.NameFarEast = "MS ゴシック"
.NameAscii = "+本文のフォント"
.NameOther = "+本文のフォント"
.Name = "+本文のフォント - 日本語"
.Size = 26
.Bold = False
.Italic = False
.Underline = wdUnderlineNone
.UnderlineColor = wdColorAutomatic
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.Color = wdColorAutomatic
.Engrave = False
.Superscript = False
.Subscript = False
.Spacing = 0
.Scaling = 100
.Position = 0
.Kerning = 1
.Animation = wdAnimationNone
.DisableCharacterSpaceGrid = False
.EmphasisMark = wdEmphasisMarkNone
.Ligatures = wdLigaturesNone
.NumberSpacing = wdNumberSpacingDefault
.NumberForm = wdNumberFormDefault
.StylisticSet = wdStylisticSetDefault
.ContextualAlternates = 0
End With
End Sub
ユーザーがダイアログボックスでは設定しない項目についても、勝手にデフォルト値を記録するのです。
例えば、
.Bold = False
では、「太字」項目にデフォルト値Falseを入れています。
.Italic = False
では、「斜体」項目に、同じくデフォルト値Falseを入れています。
デフォルト値設定の項目は、省略することができます。
というか、デフォルト値は不要なので、コードに記述することなんてしません。
デフォルト値を設定した部分を省略すると、次のように読みやすいマクロコードになります。
Sub Macro1()
Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
With Selection.Font
.Name = "MS ゴシック"
.Size = 26
End With
End Sub
たったこれだけのコード足ります。
欠点【2】
無駄な操作が記録される。
上記欠点【1】のマクロでは、最初の5文字を選択してから、フォント設定しています。
このように、「マクロの記録」機能でマクロコードを生成させるには、いったん設定対象を「選択」せざるを得ません。
Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
のコードが、設定対象となる最初の5文字を選択する操作です。
しかし、マクロ処理では、わざわざ対象の選択の必要がありません。
対象のオブジェクトを直接指定して、それに対して処理を施すことができます。
つまり、次のようなコードでよいわけです。
Sub Macro2()
With ThisDocument.Range(0, 5).Font
.Name = "MS ゴシック"
.Size = 26
End With
End Sub
ThisDocument.Range(0, 5).Font は、最初の5文字を指定するコードです。
「オブジェクトの直接指定での処理」に関しては、以前に解説しました。
⇒ こちらの記事をご覧ください。
同記事中、「◆第4 バックグランド処理」の項目をご覧ください。
欠点【3】
条件判断や繰り返しを行うマクロを作成できない。
マクロの機能として、条件に応じて異なる処理(条件判断)や、同一処理を何十回、何百回行うといった、繰り返しの処理が可能となります。これが、マクロの大きな特徴です。
しかし、こうした条件判断や繰り返し処理のマクロコードは、「マクロの記録」機能では生成することができません。
この「条件判断」や、「繰り返し処理」がマクロの大きな特徴で、マクロを使用する大きなメリットなのに、・・・・です。
「マクロの記録」では、「条件判断」「繰り返し処理」のコード生成ができない、この点が「マクロの記録」の最も痛い欠点、限界でしょう。
私も、マクロの大きな利点である「条件判断」や、「繰り返し処理」については、早く解説記事を書きたいと思っているところです。
近いうちに、この2つについて紹介する記事を書くことになります・・・・たぶん。
欠点【4】
ユーザーフォームを組み込んだ処理を作成できない。
ユーザーフォームは、ユーザーに選択項目などを提供するインターフェース(ダイアログボックス)です。
このユーザフォームも非常に便利なのに、マクロの記録で作ろうとしても、それはできません。これも「マクロの記録」の限界と言えるでしょう。
●2つの組み合わせが効果絶大
以上のとおり、「マクロの記録」は自動的にマクロコードを生成するという驚異的な便利機能である一方で、限界もあります。
ですから、マクロを駆使しようと思えば、やはりマクロ言語VBAを勉強して、自力でマクロコードを書けるようになる必要があります。
その上で、VBAを使って自分でコードを記述する中で、うまくマクロ記録を利用するのが、効率的なマクロ作成です。せっかくの便利機能「マクロ記録」も、うまく使うのです。
例えば、つい先日の私自身の利用例は次のとおりです。
テンプレートに保存したクイックパーツを、文書中に挿入するコードを書こうとしました。しかし、そのようなコードを正確に覚えているはずもありません。ヘルプでの検索も面倒に感じました。そこで、マクロ記録の出番です。手作業でのクイックパーツの挿入はいつもやっている操作なので、簡単にできます。それをマクロ記録すると、即、コードが生成されました。
生成されたコードは、次のとおり。
Application.Templates( _
"C:\Users\HogeHoge\AppData\Roaming\Microsoft\Document Building Blocks\1041\16\Built-In Building Blocks.dotx" _
).BuildingBlockEntries("至急").Insert Where:=Selection.Range, RichText:= _
True
上記コードをコピーし、VBエディター上の書きかけのプロシージャに組み込みます。
このように、VBAでのコード記述と、マクロ記録でのコード生成、この2つをうまく組み合わせれば、効率的なマクロ作成ができます。効果絶大です。
今回は、以上となります。
私も愛用しているAmazon製のタブレット Fire (私は、Fire HD 8です。)
その Fire HD 10 にNewモデルが出ます。
発売日は2019年10月30日。
【1】 Fire HD 10 は、10.1インチ高解像度フルHDディスプレイ。前世代機より30%早く、サクサクと。大画面で迫力のエンターテイメントを楽しめます。
【2】 32GBと64GBの選べる大容量ストレージに加え、512GBまでのmicroSDカード(別売)に対応。最大12時間の長稼働バッテリーで映画やドラマ・ブラウジング・読書・音楽をどこでも楽しめます
【3】 Alexa搭載で、「アレクサ、AKB48の音楽かけて」と話しかけることで操作ができます。
【4】 USB-C接続で、充電も簡単です。
内蔵ストレージ32GBモデルでは、価格は、¥15,980 です。やっすぅ。
512GBまでのmicroSDカードが使えるので、内蔵32GBでも十分なのです。
Amazonプライム会員なら、さらに20%OFFのクーポン適用があります。
【Newモデル】Fire HD 10 タブレット ブラック (10インチHDディスプレイ) 32GB | |
価格:¥15,980 | |
Amazon |
それでは、また次の記事で。