質問するログイン新規登録
VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

Q&A

1回答

131閲覧

パワーポイントVBAで複数のスライドをPDF出力したい

feijor

総合スコア7

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

0グッド

0クリップ

投稿2025/08/29 03:29

0

0

実現したいこと

ExportAsFixedFormatやActivePresentation.PrintOutにて、複数のスライドをPDF出力する機能を作りたい

発生している問題・分からないこと

ExportAsFixedFormatのRangeTypeをppPrintSlideRangeに設定した際に、スライド番号をセットする方法がわからない

該当のソースコード

Sub ExportSlideAsPDF() '保存先のパスを設定 Dim saveFilePath As String saveFilePath = Environ("USERPROFILE") & "\Desktop\" & "testpdf" & ".pdf" 'ex)1-3番目のスライドのみをPDFとして出力 With ActivePresentation .ExportAsFixedFormat _ Path:=saveFilePath, _ FixedFormatType:=ppFixedFormatTypePDF, _ RangeType:=ppPrintSlideRange, _ PrintSlideRange:=Array(1, 3) End With End Sub

ppPrintSlideRangeの値セット

1With ActivePresentation 2 With .PrintOptions 3 .RangeType = ppPrintSlideRange 4 With .Ranges 5 .ClearAll 6 .Add 1, 1 7 .Add 3, 3 8 End With 9 End With 10 .PrintOut 11End With

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

PrintSlideRange:=Array(1, 3)にて、名前付き引数が見つかりませんと出てしまいます。
ppPrintSlideRangeの値セットのコードを試してみましたが、できませんでした。

RangeType:=ppPrintCurrentの場合は現在のスライドがPDF出力されることを確認できました。

有識者の方がいらっしゃればアドバイスいただけますと大変助かります。

補足

実行はボタン配置したスライドを「スライドショーの開始」でボタンを押して発火することを想定しています。

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

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

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

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

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

guest

回答1

0

ExportAsFixedFormatのRangeTypeをppPrintSlideRangeに設定した際に、スライド番号をセットする方法

引数 RangeType に定数 ppPrintSlideRange を渡す場合

vba

1Sub Sample1() 2 3 Dim objWSH As Object 4 5 Set objWSH = CreateObject("WScript.Shell") 6 7 Dim saveFilePath As String 8 9 saveFilePath = objWSH.SpecialFolders("Desktop") & "\" & _ 10 "testpdf1" & ".pdf" 11 12 Set objWSH = Nothing 13 14 With ActivePresentation 15 16 '印刷オプションの設定 17 With .PrintOptions 18 .RangeType = ppPrintSlideRange 19 With .Ranges 20 .ClearAll 21 '1番目から3番目までのスライド範囲を追加 22 .Add 1, 3 23 End With 24 End With 25 26 '印刷オプションに追加された1つめのスライド範囲を PDF 出力 27 .ExportAsFixedFormat _ 28 Path:=saveFilePath, _ 29 FixedFormatType:=ppFixedFormatTypePDF, _ 30 RangeType:=ppPrintSlideRange, _ 31 PrintRange:=.PrintOptions.Ranges(1) 32 33 End With 34 35End Sub

引数 RangeType に定数 ppPrintSelection を渡す場合

vba

1Sub Sample2() 2 3 Dim objWSH As Object 4 5 Set objWSH = CreateObject("WScript.Shell") 6 7 Dim saveFilePath As String 8 9 saveFilePath = objWSH.SpecialFolders("Desktop") & "\" & _ 10 "testpdf2" & ".pdf" 11 12 Set objWSH = Nothing 13 14 With ActivePresentation 15 16 '1番目のスライドと3番目のスライドを選択する(2番目および4番目以降は含まれない) 17 .Slides.Range(Array(1, 3)).Select 18 19 '選択中のスライドをPDF出力する 20 .ExportAsFixedFormat _ 21 Path:=saveFilePath, _ 22 FixedFormatType:=ppFixedFormatTypePDF, _ 23 RangeType:=ppPrintSelection, _ 24 PrintRange:=Nothing 25 26 End With 27 28End Sub

投稿2025/08/29 07:19

sk.exe

総合スコア1108

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問