質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

4374閲覧

(VBA)PowerPoint(パワポ)のフォントを統一させたい

izuki_y

総合スコア65

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/07/30 13:45

いつもお世話になっております。
表題の件について質問させてください。

お世話になっております。
表題の件で質問をさせてください。

環境:
Windows 10 Pro x64
Power Point 2016

パワポで使う文字って大体下のパターンだと思っております。

パワポ画面

下記のVBAを使ってパワポの種類を統一させてみましたが、表とグループ化した文字は変わりませんでした

VBA

1Sub フォントを一括変更する() 2 3 'Const FNT_NAME = "Times New Roman" 4 Const FNT_NAME = "Meiryo UI" 5 Const FNT_SIZE = "10.5" 6 Dim sld As Slide 7 Dim shp As Shape 8 9 For Each sld In ActivePresentation.Slides 10 'テキストボックス 11 For Each shp In sld.Shapes 12 If shp.Type <> msoPlaceholder Then 13 If shp.HasTextFrame Then 14 15 With shp.TextFrame.TextRange.Font 16 .Name = FNT_NAME 17 .NameFarEast = FNT_NAME 18 .Size = FNT_SIZE 19 End With 20 21 End If 22 End If 23 Next shp 24 Next sld 25End Sub

結果

調べてみたところサンプルを発見したので以下のVBAサンプルを使ってみましたが上手くいきません。

VBA

1Sub フォントの一括変換() 2 'Const FontName = "MSP ゴシック" 3 Const FontName = "Meiryo UI" 4 5 Dim sld As Slide 6 Dim shp As Shape 7 Dim clm As Columns 8 Dim cl As Object 9 Dim gsh As GroupShapes 10 11 12 For Each sld In Application.ActivePresentation.Slides 13 For Each shp In sld.Shapes 14 'テキストボックス 15 If shp.HasTextFrame Then 16 With shp.TextFrame.TextRange.Font 17 .name = FontName 18 .NameFarEast = FontName 19 End With 20 End If 21 'テーブル内変換 22 If shp.HasTable Then 23 For Each clm In shp.Table.Columns 24 For Each cl In clm.Cells 25 26 With cl.Shape.TextFrame.TextRange.Font 27 .name = FontName 28 .NameFarEast = FontName 29 End With 30 Next 'cl 31 Next 'clm 32 End If 'HasTable 33 'グループの場合 34 If shp.Type = msoGroup Then 35 For Each gsh In shp.GroupItems 36 If gsh.HasTextFrame Then 37 With gsh.TextFrame.TextRange.Font 38 .name = FontName 39 .NameFarEast = FontName 40 End With 41 End If 'HasTextFrame 42 Next 'gsh 43 End If 44 Next 45 Next 46End Sub

For Each cl In clm.Cellsのところでエラーになります。
調べたところColumnsCellsは存在しない様ですが、メソッドを変更したりもしましたが、
上手くいかずに再び質問をいたしました。

申し訳ございませんがご回答いただけませんでしょうか。

何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

調べてみたところサンプルを発見したので以下のVBAサンプルを使ってみましたが上手くいきません。

の引用元は以下のサイトですかね?

【PowerPoint(VBA)】パワポ資料のフォントを一括変換する方法(グループ化図形対応)|ひとりPython3アプリ制作、分析、解析


コードの方の話をすると、Dim clm As Columnsの型が誤っているのが原因です。
.ColumnsをFor Eachで列挙したオブジェクトになるので、単数形のColumn型を指定しましょう。

問題の箇所の手前までは、きっちり型を明示して頂いているので、
以下のように、一時的に.Itemと入力すると、列挙されるオブジェクトの型を確認することもできます。

イメージ説明

また、以下の変数についても型の指定を変更した方が良いでしょう。

vba

1Dim cl As Cell 2Dim gsh As Shape

ただ、「フォントの統一」という事を考えるのであれば、「テーマのフォント」を使用するのを個人的には推奨したいです。

フォントの名前に「~ 見出し」「~ 本文」と設定されている場合があると思いますが、それらのフォントは「テーマのフォント」の設定を参照しているフォントになります。

「~ 見出し」「~ 本文」のフォントを設定しておくことで、「テーマのフォント」さえ変更すれば瞬時に全ての図形のフォントを変更できるようになります。

PowerPoint2016では「表示タブ」>「スライドマスター表示」>「スラ痔尾マスタータブ」>「フォント」から「テーマのフォント」を確認できます。

VBAからテーマのフォントを設定する場合は、以下の文字列をFontのNameなどに設定します。

プロパティ名見出しのフォント本文のフォント備考
Name+mj-lt+mn-lt英数字用のフォント
NameFarEast+mj-ea+mn-ea日本語文字用のフォント

mj = Major
mn = Minor
lt = Latin
ea = East Asia

投稿2020/07/31 10:15

imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izuki_y

2021/06/24 12:56

返事が遅くなってしまい大変申し訳ございませんでした。 ご回答頂きましてありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問