3 パワーポイント動画作成(アニメーションとナレーション入り) | kidproのブログ

kidproのブログ

プログラミング教育情報と私の日常を徒然に

こどもの笑顔を見たいです

b2sfukazawa@gmail.com

最終版

 

スキーム 完全自動化を目指して!

 

WAVファイルを貼り付けるまで完成しました。

これこそRPAです

動いているのを見ているだけ!

  • 完成 パワーポイントのノートを取り出す
  • 完成 ノートを読んで行をクリップボードに入れ音読のプロに転記する
  • 完成 音読のプロでWAVファイルを作成する ページ番号+行番号.wav
  • 完成 パワーポイントのスライドにWAVを貼り付ける
  • パワーポイントのスライドでWAVをオブジェクトのアニメーションと同期させる
  • ビデオの作成
CreateWAVfrompptxNotes.py
# -*- coding: utf-8 -*-
#pip install pywin32
#pip install pyperclip
#pip install python-pptx

import time
import win32com.client
import win32gui
import pyperclip
import pptx
import time
import os
import glob

def remove_glob(pathname, recursive=True):
    for p in glob.glob(pathname, recursive=recursive):
        if os.path.isfile(p):
            os.remove(p)
def main():
#   音読のプロ出力先を削除
    remove_glob("C:/Users/snortgm/Desktop/*.wav")
    remove_glob("C:/Users/snortgm/Desktop/*.txt")
    wshell = win32com.client.Dispatch('WScript.Shell')
    memoapp = win32gui.FindWindow(None,'音読のプロ Premium')
    time.sleep(1)
    win32gui.SetForegroundWindow(memoapp)
    time.sleep(1)
#   PPTX読み込み
    prs = pptx.Presentation('スマホ入門講座_20211014_ナレーション.pptx')
    for page, sld in enumerate(prs.slides, start=1):
      lines=sld.notes_slide.notes_text_frame.text
      w=lines.split("\n")
      n=0
#     1行ごとに名前を付けてWAVを保存する
      for line in w:
        pyperclip.copy(line)
        wshell.SendKeys("%FW"+str(page)+"_+str(n)+"{ENTER}")
        n=n+1
        time.sleep(2)
if __name__ == '__main__':
    main()
 
パワーポイントマクロでWAVを貼り付けます(pythonのライブラリが機能しないのでマクロで作りました)
 
Sub SlideVoice()
    Dim i As Long
    Dim cd As String
    cd = ActivePresentation.Path
    Dim wavePath As String
    Dim oSlide As Slide
    Dim oShp As Shape
    
    With ActivePresentation
                dx = 50
                wTop = 50
                wleft = 50
                buf = Dir(cd & "\wav\*.wav")
                Do While buf <> ""
                    FileName = cd & "\wav\" & buf
                    fn = Replace(buf, ".wav", "")
                    w2 = Split(fn, "_")
                    sid = Int(w2(0))
                    
                    Set oSlide = ActivePresentation.Slides(sid)
                    Set oShp = oSlide.Shapes.AddMediaObject2(FileName, False, True, wleft, wTop)
            Debug.Print FileName
                    With oShp.AnimationSettings.PlaySettings
                        .PlayOnEntry = True
                        .HideWhileNotPlaying = True
                    End With
                    wleft = wleft + dx
                    
                    buf = Dir()
                Loop
       
    End With
    MsgBox "音声埋め込み完了"
End Sub