dポイントプレゼントキャンペーン実施中!

週に1度の会議中にプロジェクターに写したExcel(共有ブック)をベースとした資料からPowerPointファイルのスライドショーを開きたいと思っているのですが、ハイパーリンクだと編集画面が開くため、その度にスライドショーの操作をしなくてはいけませんので最初からスライドショーで開きたいと思っています。また、Excel内のPowerPoint(各部署が編集したものが共有フォルダに入っている)のファイル数が多いため、スライドショー形式で保存したファイルをリンクというのは避けたいと考えています。ハイパーリンクのアドレスの編集でどうにかなったりするでしょうか。
ご教授ねがいます。

A 回答 (3件)

プレゼンファイル(ppt*)をスライドファイル(pps)に変更して保存するVBAです。



使用するプレゼンファイル(複数)をローカルのフォルダに保存して実行してください。
UIは、保存されているフォルダを聞いてきますのでそのフォルダを選択してください。
デスクトップに日付+SlideShow名のフォルダが作成され、.ppt*のファイルを.ppsに書き換え保存します。元ファイルはそのままです。
①と②の方法を記載しました。①は、開き保存します。②はそのままコピペする時に拡張子を変えています。②をはじめ作成しましたが、ppsxで保存すると
セキュリティソフト~のメッセージで開けませんでしたので①を作成しました。しかし、こちらの保存方法でも拡張子は、.ppsになるようです。
.ppsなら①でも問題ないので①の方が処理が早く良いでしょう。
必要なファイルをローカルのフォルダに保存しているので管理、リンクも分かり易いかと思いますが。
取り敢えずOfficeのバージョン記載がないので、ここで妥協します。不明な点は質問してください。
①は、ppSaveAsShowを使用する為、Microsoft PowerPoint X.X Object Libraryの参照をしてください。

Sub PPSX1()
Dim FSO As Object
Dim fol_Path, SaveDir, Bf, f, Exte
Dim Pwp As Object
Dim Prs As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set Pwp = CreateObject("PowerPoint.Application")
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = ThisWorkbook.Path
    If .Show = True Then
      fol_Path = .SelectedItems(1) & "\"
    End If
  End With
  If fol_Path = "" Then Exit Sub
  'デスクトップに日付+SlideShow名のフォルダが作成される
  SaveDir = CreateObject("WScript.Shell").SpecialFolders("desktop") & "\" & Format(Date, "yyyymm") & "SlideShow"
  If Dir(SaveDir, vbDirectory) = "" Then
    MkDir SaveDir
  End If

  For Each f In FSO.GetFolder(fol_Path).Files  ' フォルダ内のファイルを取得
    Bf = FSO.GetBaseName(fol_Path & "\" & f.Name)
    Exte = FSO.GetExtensionName(fol_Path & "\" & f.Name)
    If Exte Like "ppt*" Then
      '①開いてppSaveAsShowで保存
      Set Prs = Pwp.Presentations.Open(fol_Path & "\" & f.Name, WithWindow:=False)
      With Prs
        .SaveCopyAs SaveDir & "\" & Bf, ppSaveAsShow '検証結果 最新形式ppsxにならない?
        .Saved = True
        .Close
      End With
      '------
    End If
    Set Prs = Nothing
  Next
  Set Pwp = Nothing
  Set FSO = Nothing
End Sub
'SaveAs メソッドについては、https://docs.microsoft.com/ja-jp/office/vba/api/ …

②不具合がなければこちらで良いかと思います。
Sub PPSX2()
Dim FSO As Object, f
Dim fol_Path As String, SaveDir As String
Dim Bf As String, Exte As String
  Set FSO = CreateObject("Scripting.FileSystemObject")
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = ThisWorkbook.Path
    If .Show = True Then
      fol_Path = .SelectedItems(1) & "\"
    End If
  End With
  If fol_Path = "" Then Exit Sub
  'デスクトップに日付+SlideShow名のフォルダが作成される
  SaveDir = CreateObject("WScript.Shell").SpecialFolders("desktop") & "\" & Format(Date, "yyyymm") & "SlideShow"
  If Dir(SaveDir, vbDirectory) = "" Then
    MkDir SaveDir
  End If
  For Each f In FSO.GetFolder(fol_Path).Files  ' フォルダ内のファイルを取得
    Bf = FSO.GetBaseName(fol_Path & "\" & f.Name)
    Exte = FSO.GetExtensionName(fol_Path & "\" & f.Name)
    If Exte Like "ppt*" Then
      FileCopy fol_Path & "\" & f.Name, SaveDir & "\" & Bf & ".pps"
    End If
  Next
  Set FSO = Nothing
End Sub

’メッセージなどを出力したい場合は、追加してください。
    • good
    • 0
この回答へのお礼

詳細な返信ありがとうございます◎
VBAは数回簡単なものをコピペして使っただけなので非常に難しく感じてしまいますが最初のものから試してみたいと思います。

お礼日時:2019/12/15 22:56

なるほど、


VBAでスライドショーで開くコードです。が終了する時は編集画面が出ます。
参考まで、、、あと多くのプレゼンファイルをマクロでスライドショー形式で別フォルダに保存する事も出来ますね。
それはまた後で
Option Explicit
Sub PP_slideOpen()
Dim Pwp As Object
Dim Prs As Object ' Presentation
Set Pwp = CreateObject("PowerPoint.Application")
Set Prs = Pwp.Presentations.Open(Range("A1").Text)
Prs.SlideShowSettings.Run
Set Prs = Nothing
Set Pwp = Nothing
End Sub

Range("A1")にプレゼンファイルのフルパスの記載があるとしています。
    • good
    • 0

こんにちは、



>ファイル数が多いため、スライドショー形式で保存したファイルをリンクというのは避けたいと考えています。
ファイルを*.ppsx (スライド ショー) で保存すると出来る事は知っているが、さらに数が増えるのを避けたいと言う事でしょうか?

これは、ファイル管理の問題で数千ファイルあっても必要ファイルは作成せざる負えないのではないでしょうか?
または、ちょっとカッコ悪いですが、現状を受け入れるか。

>ハイパーリンクのアドレスの編集でどうにかなったりするでしょうか。
リンクの問題では無く対象ファイルの問題なので、出来ないと思います。(私の知る限り)

ご存知かと思いますが、2通り ただし、スライド ショーとして実行するなら、1は必須です。

1、 PowerPoint でスライド ショーを作成し、 *.ppsx (スライド ショー) で保存する
2,1  Excel の [挿入] タブ > オブジェクト > [ファイルから] タブ で *.ppsx ファイルを挿入
2,2 または、Excel の [挿入] タブ >ハイパーリンク > ファイル参照
2,1 挿入したプレゼンテーションを右クリック > Presentation オブジェクト > Show でスライド ショーを実行
2,2 または、ハイパーリンクをクリック

追記:VBAを導入すれば出来るかと思いますが、.ppsxファイルを作るより、おそらく問題があると思います。
VBAをサクサク作ってよい会社ならVBAでの実行は、さほど難しくないですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ファイル数が多い~避けたいというのは、部署ごとにファイルを作成しているので元々のファイル数が多くそれをPPSファイルに保存しなおすのにそれなりに時間を要してしまうため避けたいという意味でした。

PowerPointの中にハイパーリンクでほかのPowerPointを入れると最初からスライドショーになるのでそんな感じでやれたらと思ったのですが、
VBAも視野に入れて検討したいと思います。

お礼日時:2019/12/15 11:19

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