06.テキストを含まない図形
PowerPoint文書では、視覚効果を上げるためにテキスト以外にも様々な図形が使われていたりします。
図形のうちでもテキストを含まないもの、例えば直線などがスライドに含まれていても問題なく処理できるか確認してみましょう。
テスト文書に直線を追加
先に作成したPowerPointのテスト文書に直線の図形を追加します。
新しい白紙のスライドを1ページ目に追加して、直線を1本挿入します。
プログラムの動作確認
上記で作成したテスト文書をPowerPointで開いたまま、Excelウィンドウに切り替えて、「フォント変更 (起動中PPTの全スライド)」ボタンをクリックして、プログラムを動作させます。
すると、「実行時エラー ~ 指定された値は境界を超えています。」が発生してしまいました。何が起こったのか「デバッグ」ボタンをクリックして、プログラムの動作状態を確認しましょう。
次のようにVBEが開き、エラーの発生箇所がコード上で黄色にハイライトされます。
恐らく、テスト文書に追加した直線のシェイプオブジェクトでエラーが発生したのだと推測されます。
ChangeFont関数で引数として受け取ったoShape変数の中身を見てみます。
oShape変数をダブルクリックして反転表示させた上で、マウスでウォッチウィンドウへドラッグします。
ウォッチウィンドウに追加されたoShape変数の左側にある ⊞ をクリックして展開します。
ウォッチウィンドウでは、変数の値や型、階層構造などを確認することができます。ウォッチウィンドウを下の方へスクロールして階層構造を展開していき、oShape.TextFrame2.TextRange.Fontの内容を確認してみます。
TextRangeの値が、<指定された値は境界を超えています。>となっており、その先は展開できません。まあ、テキストを含まない「直線」図形なので当然と言えば当然の結果ですが。
エラーの発生理由が分かった所で、「リセット」ボタンを押して、プログラムを停止させて、プログラムを改修しましょう。
直線図形のエラー回避
そもそも、直線のようなテキストを含まないシェイプオブジェクトの場合は、フォント設定を含まないので、フォントの変更処理をパスしてやればよいでしょう。次のようにChangeFont関数の内容を変更します。
Private Sub ChangeFont(oShape As Object)
On Error GoTo ERROR_EXIT
With oShape.TextFrame2.TextRange.Font
.NameFarEast = sFontNameZenkaku
.Name = sFontNameHankaku
End With
ERROR_EXIT:
End Sub
ChangeFont関数内の先頭に追加した「On Error GoTo ERROR_EXIT」は、エラーが発生した時点で、ERROR_EXITラベルへジャンプするので、エラーの発生する箇所以降の処理をパスできます。
改修プログラムの動作確認
直線を追加したテスト文書をPowerPointで開いたまま、Excelウィンドウに切り替えて、「フォント変更 (起動中PPTの全スライド)」ボタンをクリックして、プログラムを動作させます。
直線が追加された文書でもエラーが発生せず、2ページ目にあるテキストのフォントが変更され、「終了!」メッセージボックスが表示されたら動作は正常です。
「OK」ボタンを押してメッセージボックスを閉じます。