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

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

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

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

Q&A

解決済

1回答

1204閲覧

ExcelVBA PowerPointファイルを最終版(読み取り専用)に変更したい

alma0925

総合スコア15

VBA

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

0グッド

0クリップ

投稿2022/01/31 01:17

以前こちらで何度か質問した件に関連して再度質問します。
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

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

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

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

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

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

guest

回答1

0

自己解決

他サイトにて相談して
'PowerPointを起動してスライド1ページ目の中の全てのShapeについてテキストがあればセルに出力する
Set ppPre = ppApp.Presentations.Open(FileName:=PP_PathName, WithWindow:=MsoTriState.msoFalse)
上記の部分を WithWindow:=MsoTriState.msoTrueにして解決していこうと思います。
閲覧ありがとうございました。

投稿2022/02/07 03:03

alma0925

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問