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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

1717閲覧

パワーポイントのマクロで、全スライドに渡り「書式」のうち「フォント」情報のみリセットしたい

hSpringsteen

総合スコア7

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/11/15 09:52

前提・実現したいこと

パワーポイントで、「全ての書式をクリア」コマンドに相当する操作を、全スライドに渡りマクロで実現したいです。
さらに具体的には「書式」のうち「フォント」情報のみリセットし、スライドマスターの指定フォントに統一できるようにしたいです。(色や太字情報は残す)
フォントを完全に指定するのではなく、スライドマスターごとに臨機応変に変換して欲しいのです。

発生している問題・エラーメッセージ

*「フォントの置換」コマンドや、スライドマスターでの統一、「デザイン」のフォント変更ではうまく変換できない場合が多いです
*上記では、Calibri英字フォントが一部Mandelになってしまう不具合などもあります

該当のソースコード

Powerpoint 2016 for Macのマクロ(VBA)を使用しています

試したこと

以下、https://www.relief.jp/docs/powerpoint-macro-replace-fonts.htmlの
コードですが、フォント名を指定せねばならず、リセットする方法がわかりません。
とりあえず走らせることは可能です。

Sub フォントを一括変更する()  Dim sld As Slide  Dim shp As Shape  For Each sld In ActivePresentation.Slides   For Each shp In sld.Shapes   With shp     If .HasTextFrame Then      With .TextFrame.TextRange.Font       .Name = “Calibri”       .NameFarEast = “メイリオ”      End With     End If   End With   Next shp  Next sld End Sub

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

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

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

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

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

hSpringsteen

2020/11/15 13:24

With .TextFrame.TextRange.Font .Name = ActivePresentation.SlideMaster.TextStyles.Item(Type:=ppDefaultStyle).Levels(Level:=1).Font.NameAscii .NameFarEast = ActivePresentation.SlideMaster.TextStyles.Item(Type:=ppDefaultStyle).Levels(Level:=1).Font.NameFarEast End With で解決しました! 現在のスライドマスターフォントを指定するので、 別のマスターフォントのスライドにコピーした時にフォントが引き継がれてしまうことを懸念しましたが、きちんとフォントは「リセット」されていました。 この理屈はよくわかりません・・・ 「スライドマスターのフォント」というのが、「フォント指定がない状態」を指しているという認識でしょうか。
hSpringsteen

2020/11/15 13:24

ありがとうございます。
radames1000

2020/11/18 00:38

解決されたのであれば、自己回答、ベストアンサーとして質問を閉じていただけたらと思います。
guest

回答1

0

自己解決

With .TextFrame.TextRange.Font
.Name = ActivePresentation.SlideMaster.TextStyles.Item(Type:=ppDefaultStyle).Levels(Level:=1).Font.NameAscii
.NameFarEast = ActivePresentation.SlideMaster.TextStyles.Item(Type:=ppDefaultStyle).Levels(Level:=1).Font.NameFarEast
End With
で解決しました

投稿2020/11/18 03:26

hSpringsteen

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問