帯

05.テキストボックスのフォント変更

それでは、いよいよPowerPoint文書のフォントを変更するプログラムを作成していきます。まずは単純なテキストボックスのフォント変更です。

プログラム組み込み

次のコードは、Sheetモジュール内全体です。これをVBEでSheetモジュールに書き込んでください。
前回までに作成したコードから変更箇所だけを編集してもよいですし、前回のコードを削除して全てを貼り換えてもよいです。

Option Explicit

Private Const RANGE_FONTNAME_ZENKAKU = "B3"
Private Const RANGE_FONTNAME_HANKAKU = "C3"

Private sFontNameZenkaku As String
Private sFontNameHankaku As String

Private Sub buttonPresentation_Click()
    sFontNameZenkaku = Range(RANGE_FONTNAME_ZENKAKU)
    sFontNameHankaku = Range(RANGE_FONTNAME_HANKAKU)
    
    Dim oApplication As Object
    Set oApplication = CreateObject("PowerPoint.Application")
    
    If oApplication.Presentations.Count <> 1 Then
        MsgBox "対象PowerPoint文書を1つだけ開いておいてください"
    Else
        Dim oSlide As Object
        For Each oSlide In oApplication.Presentations(1).Slides
            Dim oShape As Object
            For Each oShape In oSlide.Shapes
                Call ChangeFont(oShape)
            Next oShape
        Next oSlide
        MsgBox "終了!"
    End If
End Sub

Private Sub ChangeFont(oShape As Object)
    With oShape.TextFrame2.TextRange.Font
        .NameFarEast = sFontNameZenkaku
        .Name = sFontNameHankaku
    End With
End Sub

テスト文書の作成

プログラムを起動する前に、テスト文書を作成しておきましょう。

PowerPointアプリケーションを起動して、新規文書を作成します。
空白スライドに横書きのテキストボックスをいくつか追加して適当な文字列を記入します。

下図はサンプルイメージです。4つのテキストボックスを追加して文字列を記入し、フォントは「MS ゴシック」としました。

テスト文字列を参考に示しておきます。

VBA PowerPoint文書フォント変更

ABCDEFGHIJKLMNOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789

プログラム動作確認

先程作成したテスト文書をPowerPointで開いたまま、Excelウィンドウに切り替えて、シート上の「フォント変更 (起動中PPTの全スライド)」ボタンをクリックして、プログラムを動作させます。
PowerPoint文書のテキストのフォントが、Excelシートで指定したフォントに変更され、「終了!」メッセージボックスが表示されたら動作は正常です。
「OK」ボタンを押してメッセージボックスを閉じます。

プログラムの解説

それでは、プログラムの主な内容を説明しましょう。

    Dim oApplication As Object
    Set oApplication = CreateObject("PowerPoint.Application")

オブジェクト変数oApplicationの宣言と、CreateObject関数を使用して、PowerPointアプリケーションを参照できるようにoApplication変数にセットする処理です。
この変数oApplicationを使用することで、PowerPointアプリケーションが開いている文書を参照、操作することができるようになります。
なお、このCreateObject 関数は、すでにPowerPointアプリケーションを起動していれば、そのアプリケーションを参照し、起動していない場合は、PowerPointアプリケーションを起動後にそのアプリケーションを参照できるようにします。

    If oApplication.Presentations.Count <> 1 Then
        MsgBox "対象PowerPoint文書を1つだけ開いておいてください"

PowerPointアプリケーションで開いている文書の数が1つ以外の場合は、注意メッセージを表示してプログラムを終了します。

    Else
        Dim oSlide As Object
        For Each oSlide In oApplication.Presentations(1).Slides
            Dim oShape As Object
            For Each oShape In oSlide.Shapes
                Call ChangeFont(oShape)
            Next oShape
        Next oSlide
        MsgBox "終了!"
    End If

Else以下は、PowerPointアプリケーションで開いている文書の数が1つの場合に実行される処理です。文書からスライドのオブジェクトを1つずつ取り出し、さらに各スライドのシェイプ(テキストボックスなど)を1つずつ取り出し、ChangeFont関数に引数として与えて呼び出します。
PowerPointアプリケーションの主なオブジェクトの階層構造は以下のようになっており、アプリケーションから階層をたどり、スライドに挿入したテキストボックスなどのシェイプオブジェクトにアクセスします。
 PowerPoint.Application
  └ Presentation
     └ Slide
        └ Shape

Private Sub ChangeFont(oShape As Object)
    With oShape.TextFrame2.TextRange.Font
        .NameFarEast = sFontNameZenkaku
        .Name = sFontNameHankaku
    End With
End Sub

シェイプオブジェクトを引数として受け取り、そのテキストのフォント設定を変更する関数です。
NameFarEastは全角文字用を、Nameは半角文字列用のフォント設定です。
下図はフォント変更後のテキストボックスのフォントダイアログを表示したイメージです。

記事を気に入って頂き、お役に立てたら嬉しいです。