以前こちらで何度か質問した件に関連して再度質問します。
ExcelVBAで指定フォルダ内の複数のPowerPointファイルを取得しその中から報告書Noを取得後、PDF変換して保存する処理をしています。
今回PDF変換して保存する前に、変換前のPowerPointファイルを最終版(読み取り専用)にして保存したいのですがその方法がうまくいきません。
以下のサイトを参考にしたのですが、デバッグエラーになります。
https://docs.microsoft.com/ja-jp/office/vba/api/powerpoint.presentation.final
※Aの部分に ppPre.Final = True と設定したのですが
デバッグエラー「findメソッドは失敗しました。'_Presentation'オブジェクト」と表示されます。
ローカルウィンドウでppPre(Presentation)を確認したところ規定値はFalseになっているので試しに
ppPre.Final = False
としたところ何も問題なく通りました。
あまり最終版にする方法について検索してもないのと
最終版にした場合は保存する際に影響がないか知っていましたら教えていただきたいです。
宜しくお願いいたします。
'********************************************************************************************************** ' Convert_PDF_PowerPoint ' 1フォルダにあるPowerPointファイルから報告書Noを取得しPowerPointに変換 ' CreateDate :2021/11/30 HIROKO.TODA ' 引数:PP_PathName…01フォルダパス ' 引数:SaveFilePath…02フォルダパス ' 引数:FlgConvPP…PDF変換完了フラグ '********************************************************************************************************** Public Function Convert_PDF_PowerPoint(ByVal McrPath, PP_PathName As String, ByRef SaveFilePath As String, FlgConvPP As Boolean) As String Dim ppApp As Object 'PowerPoint.Application Dim ppPre As Object 'PowerPoint.Presentation Dim ppSlide As Object 'PowerPoint.Slide Dim ppShape As Object 'PowerPoint.Shape Dim ppText As String 'PowerPoint.Text Dim MustBreak As Boolean '報告書No取得フラグ Dim ppSMaster As Object 'PowerPointSlideMater Dim ppSMasterLayout As Object 'PowerPointSlideMaterCustomLayout '初期設定 ppText = "" Convert_PDF_PowerPoint = "" Application.ScreenUpdating = False Set ppApp = CreateObject("PowerPoint.Application") 'PowerPointを起動してスライド1ページ目の中の全てのShapeについてテキストがあればセルに出力する Set ppPre = ppApp.Presentations.Open(FileName:=PP_PathName, WithWindow:=MsoTriState.msoFalse) '全てのスライドに対して以下の処理を繰り返す For Each ppSlide In ppPre.slides '*****報告書Noを取得する処理は省略***** Next '※A デバッグエラーになる。 ppPre.Final = True '※A 'PDF形式でファイルを保存する With ppPre .SaveAs FileName:=SaveFilePath, FileFormat:=32 End With 'Presentationを閉じる ppPre.Close 'PDF変換完了フラグをTrueにする FlgConvPP = True 'オブジェクトの開放 Set ppShape = Nothing Set ppSlide = Nothing Set ppPre = Nothing Set ppApp = Nothing Application.ScreenUpdating = True End Function

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。