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

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

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

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

Q&A

解決済

2回答

1488閲覧

ExcelVBA PowerPointファイルを開きPDF変換処理を画面に表示させずに処理を行いたい

alma0925

総合スコア15

VBA

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

0グッド

0クリップ

投稿2021/12/10 02:34

編集2021/12/10 02:36

ネットで利用できるコードを参考にして、
ExcelVBAで複数のPowerPointのファイルを開き、各ファイルのスライド1ページ目のテキストに該当するデータがあったら値を取得し、その後にPowerPointファイルをPDF変換して保存をし、PowerPointも閉じるという処理を書いています。Fucntion関数のため外でループを回しています。
今の処理はPowePoint自体は起動して中のファイルは表示されない(スライドなど表示されず中身のない状態)でPDF変換のため発行中というメッセージが複数回表示されます。

処理中にPowerPoint自体が起動するのはいいのですができれば画面に表示させたくなく、希望としては起動しても最小化するようにしたいです(発行中のメッセージのせいで表示されるのであればメッセージも表示させたくない)
デバッグして動きを見ていると Set ppApp = CreateObject("PowerPoint.Application")
ppApp.Visible = Trueの時点でPowerPoint自体が起動して表示されたので、一度ppApp.Visible = Falseを試みたらデバッグエラーになったのでTrueにしなければいけないとは思うのですが(知識不足ですみません)その後に最小化するという書き方が分かりません。
アドバイスよろしくお願いいたします。

Public Function Convert_PDF_PowerPoint(ByVal PP_PathName, SaveFilePath As String) As String Dim ppApp As Object 'PowerPoint.Application Dim ppPre As Object 'PowerPoint.Presentation Dim ppShp As Object 'PowerPoint.Shape Dim ppSld As Object 'PowerPoint.Slide Dim ppText As String 'PowerPoint.Text Dim MustBreak As Boolean Dim intSearch As Integer '検索結果返り値 Application.ScreenUpdating = True Set ppApp = CreateObject("PowerPoint.Application") ppApp.Visible = True 'PowerPointを起動してスライド1ページ目の中の全てのShapeについてテキストがあればセルに出力する Set ppPre = ppApp.Presentations.Open(FileName:=PP_PathName, WithWindow:=MsoTriState.msoFalse) '1ページ目のスライドを取得 Set ppSld = ppPre.Slides(1) '1ページ目のスライド内のShape分処理を繰り返す For Each ppShp In ppSld.Shapes If ppShp.HasTextFrame Then 'Shapeの形式がTextBoxの場合 ppText = ppShp.TextFrame.TextRange.Text 'TextBoxの値を取得 intSearch = InStr(ppText, ReportTitle) Debug.Print intSearch If intSearch = 1 Then '値に"報告書No."が含まれている場合 Convert_PDF_PowerPoint = Mid(ppText, InStr(ppText, ReportTitle) + Len(ReportTitle)) '関数の戻り値に報告書Noを返す MustBreak = True End If If MustBreak Then Exit For '繰り返し処理を抜ける End If Next 'PDF形式でファイルを保存する With ppPre .SaveAs FileName:=SaveFilePath, FileFormat:=32 End With 'Presentationを閉じる ppPre.Close 'オブジェクトを閉じる ppApp.Quit 'オブジェクトの開放 Set ppShp = Nothing Set ppSld = Nothing Set ppPre = Nothing Set ppApp = Nothing Application.ScreenUpdating = True End Function

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

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

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

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

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

guest

回答2

0

回答ありがとうございます。
仕事で使ってますが、週末は確認できないので週明けに修正してからべすと

投稿2021/12/10 10:53

alma0925

総合スコア15

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

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

0

ベストアンサー

Falseにするのではなく ppApp.Visible = True の行自体をなくせばいいと思います。

投稿2021/12/10 09:16

jinoji

総合スコア4592

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

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

alma0925

2021/12/10 10:55

回答ありがとうございます。 仕事で作成してますが、週末は確認できないので週明けに修正して大丈夫そうでしたらベストアンサーにしてもいいでしょうか?
alma0925

2021/12/13 00:18

無事に解決できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問