パワポで使えるマクロのコードを解説|フォントをメイリオに変換する方法

Share:

  • facebook
  • twitter
  • line
パワポで使えるマクロのコードを解説|フォントをメイリオに変換する方法

「マクロ」と聞くとExcel VBAのイメージが強いですが、パワーポイントにもマクロの機能があります。今回の記事ではパワーポイントで使えるマクロのコードについて、1行ずつ分解して解説していきます。

今すぐ使える!プロの資料作成術「決算説明会資料作成ガイド」無料配布中

マクロの組み方

Excelなどで使われることが多いマクロですが、パワーポイントでも設定・実行することが可能です。
パワーポイントでマクロをどのように設定していくのか、下記の記事で操作方法を紹介していますので、是非ご覧ください。

パワーポイントのマクロで業務効率化|フォントをメイリオに変換する方法

マクロのサンプルコード|フォントをメイリオに変換する

上記の記事の中で、スライドのフォントを全てメイリオに変換するというコードを紹介しました。

Sub フォントをメイリオに変更()
Dim sld As Slide, shp As Shape
 For Each sld In ActivePresentation.Slides
  For Each shp In sld.Shapes
   If shp.TextFrame2.HasText Then
    With shp.TextFrame2.TextRange.font
     .NameFarEast = “メイリオ” ‘※要入力 日本語用フォントの設定
    End With
   End If
  Next shp
 Next sld
End Sub

コードの持つ意味

1行ずつ、上記のコードの意味を解説していきます。

1行目】 Sub フォントをメイリオに変更()

【1行目】 Sub フォントをメイリオに変更()

これは、この手順をひとかたまりの命令として保存するコードで、いわば「これからフォントをメイリオに変更するマクロを作ります」という宣言です。(プログラミングの世界では「サブルーチン」や「プロシージャ」などといいます)

Subはサブルーチンの略ですね。
最後の行のEnd Subとセットになっていて、

Sub ひとかたまりの命令の名前()
具体的な指示内容
End Sub

という文法で使われます。

2行目】 Dim sld As Slide, shp As Shape

【2行目】 Dim sld As Slide, shp As Shape

DimはDemandの略で「宣言する」という意味です。
今後何度も使うものをここで宣言しておくと、後の行でVisual Basic側が「あ、さっき言ってた単語だな」と認識することができます。

文法は

Dim 名付けたいオブジェクトの名前 As オブジェクトのカテゴリ名

となります。

複数のオブジェクトを名付けたい場合

Dim 名付けたいオブジェクトの名前① As オブジェクトのカテゴリ名①, 名付けたいオブジェクトの名前② As オブジェクトのカテゴリ名②

のように2回目のDimを省略してカンマでつなげることも可能です。

SlideというのはPowerPointのスライドのこと、Shapeはテキストボックスを含むPowerPointの図形のことです。
PowerPointに入っているスライドをまとめて、「Slideオブジェクト」と呼んだり、図形をまとめて「Shapeオブジェクト」と呼んだりするので覚えていてください。
ここでは、「以降のコードでsldという名前のSlideオブジェクトを利用する」「以降すべてshpという名前のShapeオブジェクトを利用する」という宣言になっています。

要するに単語が長いので省略したいとか、自分にとってわかりやすい名前で呼びたいということですね。

3行目】 For Each sld In ActivePresentation.Slides

【3行目】 For Each sld In ActivePresentation.Slides

文法は

For Each ○○ In ××

で、「××内にあるすべての○○に対し以下の命令を実行する」のような意味です。
Next sldとセットになっていて、

For Each ○○ In ××
すべての○○に対し繰り返したい命令
Next ○○

のように使います。

sldは先ほど名付けたSlideオブジェクトです。
ActivePresentation.Slidesは、「アクティブなプレゼンテーションファイルのスライド群」という意味合いです。
つまり、「アクティブなプレゼンテーションのスライド群にあるすべてのスライドに対し以下の命令を実行する」というような意味です。
フォント変更を全てのスライドに対し実行したいので、このような書き方になります。

ActivePresentation.Slidesの「.」ってどういう意味?と思っている方がいるかもしれませんが、ここでいう「.」は日本語でいうと「」「の中の」というような意味で、
オブジェクトの階層が一つ下がるときなどに使います。

プレゼンテーション>スライド>図形>テキスト>フォント

のように、PowerPointのオブジェクトには階層構造があります。
その階層構造の一つ下のオブジェクトを指す場合に「.」を用います。

4行目】 For Each shp In sld.Shapes

【4行目】 For Each shp In sld.Shapes

3行目と同様ですね。「スライド内の図形すべての図形に対し以下の命令を実行する」です。
Next shpとセットになっています。
sld.Shapesは、最初に名付けたsld(=スライド)の一つ下の階層のShapes(=図形)という意味です。
ここまでで、「すべてのスライドのすべての図形に対して以下を実行する」というコードになっています。

5行目】 If shp.TextFrame2.HasText Then

【5行目】 If shp.TextFrame2.HasText Then

If ○○ Thenは有名ですよね。「もし○○だったら以下の命令を実行する」です。
End Ifとセットになっています。

shp.TextFrame2.HasTextは、「図形のテキストフレーム内にテキストがあったら」という意味です。TextFrame2の2がついている方が機能が多いので2をつけているのですが、ここでは本筋から外れてしまうので一旦割愛します。

HasTextは、テキストがあるかどうかをTrue(正しい)かFalse(誤り)で返すものです。
「もし○○だったら・・・」のところにHasTextが入っているので、「もし”図形のテキストフレーム内にテキストがある”がTrue(正しい)なら・・・」という意味になります。

6~7行目】With

【6~7行目】With~

With shp.TextFrame2.TextRange.font
 .NameFarEast = “メイリオ” ‘※要入力 日本語用フォントの設定
End With

With ○○で「○○に対し以下の命令を実行する」です。
End Withとセットになっています。

今回は、「図形のテキストフレームの、テキスト範囲のフォントの日本語用フォント名を、メイリオに設定する」という意味です。
少し階層が深いのですが、

Shp(図形)>TextFrame2(テキストフレーム)>TextRange(テキスト範囲)>font(フォント)>NameFarEast(日本語用フォント名)

という階層になっています。
FarEastというのが気になりますが、日本語で「極東」という意味で、「アジア言語のフォント名」くらいに理解していればいいと思います。
また、プログラミングの世界では文字列にはダブルクォーテーション””をつけなければいけないので、メイリオは”メイリオ”としています。

= は「代入する」という意味合いです。
(厳密には異なりますが理解のために簡易的な表現にしています)
つまり、「図形のテキストフレームのテキスト範囲のフォントの日本語用フォント名に”メイリオ”という文字列を代入する」という意味になります。

資料作成代行サービスを提供するストリームラインが、自社のノウハウである資料作成術やパワーポイントの操作テクニックをご紹介します。

Share:

  • facebook
  • twitter
  • line

\資料作成のプロに相談してみませんか?/

資料作成をより効率化したい、資料の内容がマンネリ化している、デザインが洗練されていない、考えを上手く図解化できない、プロのアドバイスが欲しい、などのお悩みはありませんか?

パワーポイント資料作成の専門家がアドバイスします。すぐに使える資料作成のポイントや優良事例もご紹介ができます。ご相談は無料のため、ぜひ一度お気軽にご相談ください。

企画構成からデザインまで、パワーポイント資料をスピード納品

<<ご相談はこちら>>