【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?

パワーポイントで資料を作っています。

資料の中には画像や音声もあります。資料をPDFにして配布したいのですが、音声マーク(?スピーカーのようなアイコン)を非表示にしてPDFにしたいのです。一つ一つを非表示にする方法はわかるのですが、一括して非表示する方法、またはPDF変換時に表示されないようにする方法はないでしょうか?

音声マークの数が多いので、手作業でするのはなるべく避けたいです。

A 回答 (3件)

一括となるとマクロでないと無理だと思う。


サウンドアイコンの表示を切り替えるだけなら、以下のマクロで。
印刷やPDF変換前に実行し、作業が終了後に再度実行して表示に。

Sub Hidesound()
'
' 開いているスライドでサウンドアイコンを表示・非表示の切り替え
'
 Dim oSl As Slide
 Dim oSh As Shape
 Dim x As Long

 For Each oSl In ActivePresentation.Slides
  For x = oSl.Shapes.Count To 1 Step -1
   Set oSh = oSl.Shapes(x)
    If oSh.Type = msoMedia Then
     If oSh.MediaType = ppMediaTypeSound Then
      If oSh.Visible = msoTrue Then
       oSh.Visible = msoFalse
      Else: oSh.Visible = msoTrue
      End If
     End If
    End If
   Next
  Next
End Sub

ActivePresentationを対象にしているので、開いていてアクティブに
なっていれば、他のプレゼンテーションファイルでも実行可能。
アドインとして登録することでも可能です。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

>If oSh.Type = msoMedia Then
> If oSh.MediaType = ppMediaTypeSound Then
>  If oSh.Visible = msoTrue Then
>    oSh.Visible = msoFalse
>  Else: oSh.Visible = msoTrue
>  End If
> End If
>End If
この部分を調べきることができませんでした。

おかげで一瞬で切り替えができるようになりました。感謝、感謝です。

お礼日時:2022/04/10 15:01

こんにちは


#1です
PowerPointVBAでは比較的簡単な処理になると思いますので参考サイトは探せばあると思います。と回答しましたが、
ちょっと見てみたのですが、直、参考サイトになるようなのが見つかりませんでしたので
VBA処理のご質問でないので、解らない場合は無視してください。
すみません。

VBA処理で行いたい場合の参考コードです
PowerPointVBAで実行する場合と思ったのですが、
処理の内容から汎用性が無いと思いますしPowerPointをマクロ有効プレゼンにしなくてはならないので
ExcelでPowerPointを操作するExcelVBAです。

従って新規ブックを作成してExcelの標準モジュールに記し
Excelから実行します
処理の流れ
ダイアログで開き対象のPowerPointを選択・開きます
メディア画像を非表示に設定
スライドをPDFとしてデスクトップに出力
メディア画像を表示に戻し
PowerPointを閉じる ロジックです

以下ExcelVBA処理コード
Dim ppApp As PowerPoint.Application
Dim ppPrs As PowerPoint.Presentation
Sub ppSave_PDF()
Dim filepath As String
Set ppApp = New PowerPoint.Application
filepath = Application.GetOpenFilename("PowerPoint プレゼンテーション,*.pptx?;*.ppt*")
If filepath = "False" Then Exit Sub
Set ppPrs = ppApp.presentations.Open(Filename:=filepath)
ppApp.ActiveWindow.WindowState = ppWindowMinimized
ppApp.Visible = True
Call ShapeTypeVisible(msoFalse, msoMedia)'非表示
With ppPrs
.SaveAs _
Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\output_PPT" & ".pdf", _
FileFormat:=ppSaveAsPDF
End With
Call ShapeTypeVisible(msoTrue, msoMedia)'表示
ppApp.Quit
Set ppApp = Nothing
End Sub
Sub ShapeTypeVisible(s As Boolean, typ As Integer)
Dim pSlid As PowerPoint.Slide
Dim shpIdx As Integer
Set ppApp = New PowerPoint.Application
For Each pSlid In ppApp.ActivePresentation.Slides
With pSlid.Shapes
For shpIdx = .Count To 1 Step -1
With .Item(shpIdx)
If .Type = typ Then .Visible = s
End With
Next
End With
Next
End Sub

オブジェクト参照の為、事前バインディングで作成しました
参照設定
Microsoft PowerPoint XX.X Object Library をチェックしてください
    • good
    • 0
この回答へのお礼

再度の回答ありがとうございます。

ExcelのVBAはExcel内の処理ならわかるのですが、Excelから他のソフトを動かすところまではできていません。

簡単にこんなVBAを組めるスキルがうらやましいです。Excelと違ってパワーポイントのVBAを解説しているサイトが少ないのが残念です。

お礼日時:2022/04/10 15:05

こんばんは、


ずっと非表示で良いなら、
やはり選択と表示から非表示設定して使う方法でしょうか。
どの位あるのか分かりませんが、そんなに大変ではなさそうですが・・

スライドの時はすでに非表示設定にしているので、編集の時は表示設定を維持してPDF出力時だけ非表示にしたい。 
サウンドアイコン図形のサイズなどを操作して偽装するとか?
手作業でやるとそれなりに大変かもしれませんが、1度で良いかな。

パワーポイント資料をマクロ有効プレゼンにしても良いのならVBAで処理をするとか
これはPDFまで出力できるので良いのですが
PowerPointのVBAは情報が少ないので基礎的な知識が無いと手作業の方が
早いなんて事になるかも知れません。

PowerPointVBAでは比較的簡単な処理になると思いますので参考サイトは探せばあると思います。

VBAサンプルについては、ご希望、スキルなど不明なので、割愛します
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報