パワポのスライドをつくるときにもマクロを使うと便利です。
写真をスライドにすることも、自動で、ボタン1つで、できます。
※自宅にて by Leica M10
パワポにもマクロ(VBA)はある
マクロとは、プログラミングして自動的に処理をするしくみ・機能をいいます。
(VBAとはプログラミング言語のことです)。
通常はExcelで使うことが多いマクロ。
Excel以外で、Wordやパワポ(PowerPoint)にもマクロはあります。
今回使うのはパワポのマクロです。
パワポのマクロを勉強するのであれば、この本が唯一かつ、おすすめであり、今回の記事を書く際にも参考にさせていただきました。
今回の事例は、写真をパワポのスライドにするマクロです。
写真を1つずつ手で入れていけば、できないこともないのですが手間がかかります。
マクロなら、しくみをつくって、ボタンひとつで自動的に処理できるのです。
写真をスライドにするパワポマクロの下準備
そもそも、私はセミナーでこういったスライドを使うことがあります。
写真を全面に入れて、タイトルだけを入れるものです。
元々、スライドには文字を極力入れないようにしています。
文字が多すぎると、参加者の方の意識がそこに集中してしまうからです。
写真とタイトルさえあれば、それについて話せます。
元々セミナーをやるときには、カンニングペーパーや原稿を準備しない主義です。
参加者の方を見ながら話すにはその方がよく、原稿がなければ、頭が真っ白になったという状態がなくなります。
あがって声が震えて頭が真っ白になっていた私が、人前で話すときに緊張しなくなった3つの秘訣 | EX-IT
写真をメインにしたスライドをつくるときに、通常は写真ファイルを1つずつ入れて、タイトルを入れて……ということを繰り返さなければいけません。
今回は8枚のスライドではあるのですが(今朝やったメルマガ税理士進化論読者向けオンラインセミナーで使ったもの)、数が増えるとそれなりに時間がかかってしまうでしょう。
こういったときにマクロが便利です。
フォルダの中にある写真を、一瞬でスライドにすることができます。
写真ファイルの準備
写真ファイルを特定のフォルダに入れ、名前をつけておきましょう。
今回は数字を入れました。
数字の順番通りに読み込まれます(正確にはファイル名)。
マクロでは、このフォルダを指定して、ファイルを読み取るというしくみです。
スライドマスターの設定
下準備として、スライドマスターを使って文字のデザインを決めておきましょう。
マクロを使わないとしてもこのスライドマスターの機能は便利です。
特定のレイアウトのスライドを同じデザインにして、一括編集できます。
私の場合、写真を全面に表示するので、文字は白で赤い縁取りをし、場合によっては背景をちょっとだけ暗くします。
パワポのスライドはそれぞれレイアウトというものを設定できます。
スライドを右クリックして、[レイアウト]を選ぶと、レイアウトの候補が出てくるので、[タイトルのみ]にしておきましょう。
さらにリボンから[表示]→[スライドマスター]を選びます。
ショートカットキーは、Alt→W→M(Ail、W、Mと1つずつ押す)です。
スライドマスターを変更すると、[タイトルのみ]のレイアウトにすれば、そのデザインにすべて変わります。
毎回設定しなくてもよく、一括して変更もできるのです。
スライドマスターで加えた変更は次のようなものです。
・タイトルの位置、幅を調整
・フォントを「源ノ角ゴシック JP Heavy」(通常は入っていないフォントです)にし、大きさを整え、Bold(太字)にし、色を白に。
・[図形の書式]で、[文字の輪郭]を赤、2.25ptに。
・[塗りつぶし]→[塗りつぶしの色]で、黒を選び、[透過性]を70%程度に。
こんな感じになります。
設定し終わったらスライドマスターを閉じておきましょう。
文字の輪郭に色を付けたり、背景をちょっと暗くすると文字が目立ちます。
(Adobeのようにはできませんが)
この辺の設定をマクロでやってもいいのでしょうが、マクロで書くことが増えてしまいますので、私はこの設定をしたファイルにマクロが入ったものをテンプレート(ひな形)にして、繰り返し使っています。
プログラミングするには、レイアウトやスライドマスターのように、その対象のソフトのしくみを理解しなければいけません。
というよりも、プログラミングすると、そのソフトを理解できるのです。
だからこそ、プログラミングをおすすめしています。
マクロでやるのは、
・特定のフォルダに入ったファイルのうち 写真ファイルを読み取る
・写真をパワポに追加して、タイトルに写真のファイル名を入れる
というところです。
ではマクロを書いていきましょう。
写真をスライドにするパワポマクロ
VBEを起動
マクロを書くにはExcelと同様、パワポでAlt+ F 11を押し、VBE(Visual Basic Editor。マクロを書くソフト)を開きます。
さらに、[ツール]→[オプション]で、次のように設定をしておきましょう。
次に標準モジュールという、マクロを書く場所を準備します。
操作は、Alt→I→M(Alt、I、Mと順番に押す)です。
これで準備完了です。
パワポに戻って、ファイルをいったん保存しましょう。
通常のパワポファイルは、〇〇.pptxという種類で、マクロ入りのパワポファイルは、〇〇.pptmです。
フォルダのファイル名を読み取る
1つのプログラムは、Subに始まって、End Subで終わるので、プログラム名(任意)とともに入れます。
sub photo_slideを入力し、Enterキーを押してみましょう。
こうなります。
このSubとEnd Subの間にプログラムを書いていくわけです。
まずは、フォルダにある写真のファイル名を読み取りましょう。
photoという変数に、フォルダから JPEG ファイルを探して入れるように設定します。
Dir は VBA の関数でフォルダを指定してファイル名を取得するもの。
たとえばと”C:\Users\info0\Dropbox\オンラインZZZ\1 優先順位.jpg”というファイルがあれば、1 優先順位.jpg というファイル名を読み取ります。
試しにメッセージボックス、MsgBox(photo)を追加して、F5キーで実行してみましょう。
(試した後はMsgboxの1文を消しておきしょう)
こんな感じで、メッセージボックスが出て、ファイル名を読み取っていれば大丈夫です。
これは Excel マクロにもあるもので、こういった事例にも使っていました。
フォルダ内のExcel・CSVを1つにまとめるマクロ | EX-IT
スライドを追加
次にスライドを追加していきます。
最終的には、フォルダ内のすべての写真をスライドにするわけですが、まずは、1つ目の「1 優先順位」のみをスライドにするマクロをつくり、うまくいってから、繰り返し処理する部分をつくっていきましょう。
スライドを追加するときには、どのレイアウトのスライドにするかを決めなければいけません。
下準備したとおり、[タイトルのみ]というレイアウトのスライドを入れていきます。
ActivePresentation(今のプレゼンテーション、つまりパワポ)にSlides.Addで、スライドを追加でき、その追加したスライドには、sldという名前をつけます。
Dimが名前を定義し、Setがその名前をつける過程と考えていただければ。
Addには、次のものを指定する必要があります。
・Index(追加する場所)→1枚目に追加したいので、1
・Layout(レイアウト)→タイトルのみ(ppLayoutTitleOnly)
VBEで、F5キーを押して実行してみましょう。
こんな感じで、スライドが1枚追加できればOKです。
スライドへ写真を追加
スライドへ写真を追加していきます。
なお、この部分は、長くなるので、半角スペースと_(アンダーバー)で改行しました。
これがなく単に改行すると、エラーができます。
パワポ上の図形や写真などは、シェイプ(Shape)というもので取り扱います。
追加したスライド(sld)に、Shapes.AddPictureで、写真を追加し、その追加した写真には、shpという名前を付けるのです。
さらには、次のような設定をしなければいけません。
・FileName(写真のファイル名)→”C:\Users\info0\Dropbox\オンラインZZZ\” & photo
→Cからすべて入れる必要があり、photoには、「1 優先順位.jpg」が入っているので、こういった入れ方になります。
(ここの表現方法はいろいろあるでしょうが、私は直接入れたほうがわかりやすいかなと思うので)。
・ linktofile:=msoFalse(写真をリンクするか埋め込むか)→通常埋め込むのでmsofalse
・savewithdocument:=msoTrue(写真にリンクする場合に埋め込むか、リンクだけにするか)→詰め込むならmsotrue
・Left:=0, Top:=0(写真の位置)→左端なら0、0
これで実行してみましょう。
ひとまず写真は入っていますが、大きさが合っていません。
写真の幅の調整
写真の幅(shp.Width)をスライドの幅(ActivePresentation.PageSetup.SlideWidth)と同じにします。
これは私が横長の写真だけを準備しているとわかっているからやるわけですので、もし縦長の写真があると別途調整しなければいけません。
これで実行してみましょう。
うまく写真が入りました。
タイトルを入れる
スライドのタイトルに写真を入れていきます 。
sld.Shapes.Title.TextFrame.TextRange.Textで、テキストを入れる部分を指定し、photo(写真のファイル名)を入れるというプログラムです。
実行してみましょう。
なんだかうまくいっているようですが文字が出てきていません。
写真をずらして見てみるとタイトルが下に隠れています。
パワポ(パワポに限ることでありませんが)、図形やテキストのどちらが上かという順番があるのです。
今回の場合写真を先に入れたので、写真が一番上になっています。
タイトルを先に入れるという方法もありますが、写真を先に入れたほうがプログラムの流れはわかりやすいので、この順番にしました。
この場合、写真を最背面に置いておけばいいので
その1文を入れています。
これで実行してみましょう。
タイトルが写真の上にきました。
ただ、なんだか変です。
.jpgまでが入ってしまっています。
これをどうするか。
1つの方法として、私は Split関数というものを使いました。
たとえば「1 優先順位.jpg」を.(ピリオド)で区切ると、
1 優先順位
と
jpg
となり、このうち、
1 優先順位
だけを使いたいわけです。
こう入れると、「1 優先順位」 だけを使えます。
Splitで区切られたものは、0、1、2、3……と数えるので、0と指定すれば、「1 優先順位」だけを使えるのです。
実行してみましょう。
これでうまくいきました。
繰り返しの部分をつくる
今回の事例では、フォルダのファイルすべてで繰り返したいので 、Do untilと LOOP というものを使います。
繰り返しの中で、次のファイルを指定するには、
photo = Dir()
も入れておきましょう。
Do Until photo = “” で、photoが””じゃなくなるまで繰り返すという意味で、つまりは、すべてのファイルで繰り返すということになります。
実行してみましょう。
うまくいってるようですがなんだかうまくいってません。
ファイルの順番が逆です。
スライドがすべて1枚目に入っているので、
1のスライド
↓
2のスライド
1のスライド
↓
3のスライド
2のスライド
1のスライド
となってしまいます。
こういったときにプログラムをF5ではなく、F8で1つずつ実行するとよくわかるのでやってみましょう。
毎回1枚目にスライドを入れるのではなく、
スライドが1枚ある→2枚目に入れる
スライドが2枚ある→3枚目に入れる
スライドが3枚ある→4枚目に入れる
となってほしいわけです。
そのときのスライドを数えておけばそういった指示ができます。
スライドを数える
そのときのスライドを数えて、その数に+1をすれば、追加したスライドの次に追加できます。
まずはスライドを数えるプログラムを入れましょう。
cntという名前に、ActivePresentation.Slides.Countで、スライドの数を入れていきます。
これをスライドの追加部分に入れて、繰り返しのたびに、Indexが増えるようにするわけです。
これで実行するとうまくいきました。
プログラムの全文はこちらです。
Sub photo_slide() '1 フォルダの写真(JPEG)のファイル名を取得 Dim photo As String photo = Dir("C:\Users\info0\Dropbox\オンラインZZZ\" & "*.jpg") '2 フォルダの写真(JPEG)をパワポへ Do Until photo = "" 'スライドを数える Dim cnt As Long cnt = ActivePresentation.Slides.Count 'スライドを追加 Dim sld As slide Set sld = ActivePresentation.Slides.Add(Index:=cnt + 1, Layout:=ppLayoutTitleOnly) 'スライドに写真を追加 Dim shp As Shape Set shp = sld.Shapes.AddPicture( _ FileName:="C:\Users\info0\Dropbox\オンラインZZZ\" & photo, _ linktofile:=msoFalse, _ savewithdocument:=msoTrue, _ Left:=0, Top:=0) '写真の幅をスライドの幅にする shp.Width = ActivePresentation.PageSetup.SlideWidth 'スライドのタイトルに、写真のファイル名を入れる sld.Shapes.Title.TextFrame.TextRange.Text = Split(photo, ".")(0) '写真を最背面へ shp.ZOrder msoSendToBack photo = Dir() Loop End Sub
ファイル名は変える必要があります。
ぜひ一度書いてみていただければ。
■編集後記
朝は、ブログ超入門セミナーを開催。
平日の夕方、3/11の16時にも開催します。
3/11 ブログ超入門セミナー【オンライン】 | EX-IT
PSVR(プレイステーション VR)熱が再度きました。
改良版を買っていたのですが、それほどやってなく、今回やってみたいゲームがあり、モーションコントローラーも手に入れて(昔のは壊れていたので)。
Beat Saverという、剣のようにコントローラーを振りながらやる音ゲー?がおもしろいです。
ヘッドセットをかぶっている姿は、娘にとって不思議のようで、「なにやってるの?みえないでしょ?」と話しかけてきます。
VRは、12歳以下禁止なので、あと9年、娘は体験できませんが。
その頃はもっとすごいものが出てるでしょう。
■昨日の1日1新
※詳細は→「1日1新」
娘とかるた
オンラインでブログ超入門セミナー
■昨日の娘日記
保育園で、かるたが楽しかったらしく、うちでも買ってみました。
ディズニーのを欲しがるかと思えば、リカちゃんのが欲しいと。
リカちゃん、どこで知ったのか……。
結局、アンパンマンを選びました。
最初は、「アンパンマンじゃない」と言ってましたが。
かるたは、絵柄で選びつつも、ひらがながわかっているような部分もあり、上手にとります。
読む側もやりたいというので、交代すると、ふだをもって、絵柄を読んでいました。
ただ、フランケンロボというキャラの絵柄で、「はやくぱぱにあいたいなフランケンロボ」と「は」の札を読んだりも。
読めているのか、記憶しているのか、びっくりでした。
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方