Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8645 / 13644 ツリー ←次へ | 前へ→

【31859】パワーポイントコントロール IVA 05/12/1(木) 13:43 質問[未読]
【31874】Re:パワーポイントコントロール 小僧 05/12/1(木) 18:14 回答[未読]
【31912】Re:パワーポイントコントロール IVA 05/12/2(金) 9:46 発言[未読]
【31920】Re:パワーポイントコントロール 小僧 05/12/2(金) 11:50 発言[未読]
【32070】Re:パワーポイントコントロール IVA 05/12/5(月) 18:04 発言[未読]

【31859】パワーポイントコントロール
質問  IVA  - 05/12/1(木) 13:43 -

引用なし
パスワード
   ただ今、エクセルにて作業進捗表を作成しています。
コマンドボタンを押すと作業項目の参考資料(パワーポイントで作成)が閲覧できるようにしたいと思っています。
まさらっきーさんの質問とマクロ記録から参考に作ってみました。

以下のものでパワーポイントが立ち上がり、指定したパワーポイントファイルが開き、指定のスライドが最初に表示させるようにはなりました。

しかし、パワーポイントのファイルが元データ(スライドショーでないもの)とスライドショーの2つが立ち上がってしまい、スライドショーも指定の範囲内でしか見ることが出来ません。
できれば、スライドショーのみで立ち上げたいし、立ち上げたスライドショーも指定したスライドがスタートになり、前にも後にも自由に移動できるようにしたいのですが。

VBを最近はじめて、あまり詳しくありません。
どなたかアドバイスよろしくお願いします。

====================================================

Sub test()

On Error Resume Next

  Set PP = GetObject(, "Powerpoint.application")
  If (Err.Number <> 0) Then
    Err.CLEAR
    Set PP = CreateObject("Powerpoint.application")
  End If

On Error GoTo 0

PP.Visible = True

With PP.Presentations.Open(プレゼンのパス)
  With .SlideShowSettings
    .StartingSlide = 3
    .EndingSlide = 20
    .ShowType = 2
    .RangeType = 2
    .AdvanceMode = ppSlideShowManualAdvance
    .Run
  End With
  .Saved = True
End With

End Sub

【31874】Re:パワーポイントコントロール
回答  小僧  - 05/12/1(木) 18:14 -

引用なし
パスワード
   ▼IVA さん:
こんにちは。

http://support.microsoft.com/default.aspx?scid=kb;ja;303717

ここを参照して作ってみました。

Sub PowerPointのオートメーション()
'※要参照 Microsoft PowerPoint x.x Object Library

Const ppFile = "C:\test.ppt"  'pptファイルへのフルパス
Const S_Page = 3        '開始ページ
Const E_Page = 20        '終了ページ

Dim ppApp As New PowerPoint.Application
Dim ppPre As PowerPoint.Presentation
Dim ppSet As PowerPoint.SlideShowSettings
Dim boolAssist As Boolean
Dim i As Long
Dim SlideIdx(E_Page - S_Page + 1) As Long


  ppApp.Visible = True
  ppApp.WindowState = PowerPoint.PpWindowState.ppWindowMinimized

  Set ppPre = ppApp.Presentations.Open(ppFile)

  For i = 0 To E_Page - S_Page
    SlideIdx(0) = i
  Next

  With ppPre.Slides.Range(SlideIdx).SlideShowTransition
    .AdvanceOnTime = True
    .AdvanceTime = 3
    .EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut
  End With

  With ppPre.SlideShowSettings
    .StartingSlide = S_Page
    .EndingSlide = E_Page
    boolAssist = ppApp.Assistant.On
    ppApp.Assistant.On = False
    .Run
  End With
  
  Do While ppApp.SlideShowWindows.Count >= 1
    DoEvents
  Loop

  If boolAssist Then
    ppApp.Assistant.On = True
    ppApp.Assistant.Visible = False
  End If

  ppPre.Saved = True
  ppPre.Close
  Set ppPre = Nothing
  ppApp.Quit
  Set ppApp = Nothing
End Sub

当方もパワーポイントに対して余り知識があるわけではありませんので
何か至らない箇所があるかと思いますが、コードを試されてみてください。

【31912】Re:パワーポイントコントロール
発言  IVA  - 05/12/2(金) 9:46 -

引用なし
パスワード
   ▼小僧 さん:
おはようございます。
作成していただきありがとうございました。
早速試してみました。

しかし、元ファイルとスライドショーの2画面が立ち上がってしまいます。
自分が思い描いているようなことは、なかなか難しいですね。

>▼IVA さん:
>こんにちは。
>
>http://support.microsoft.com/default.aspx?scid=kb;ja;303717
>
>ここを参照して作ってみました。
>
>Sub PowerPointのオートメーション()
>'※要参照 Microsoft PowerPoint x.x Object Library
>
>Const ppFile = "C:\test.ppt"  'pptファイルへのフルパス
>Const S_Page = 3        '開始ページ
>Const E_Page = 20        '終了ページ
>
>Dim ppApp As New PowerPoint.Application
>Dim ppPre As PowerPoint.Presentation
>Dim ppSet As PowerPoint.SlideShowSettings
>Dim boolAssist As Boolean
>Dim i As Long
>Dim SlideIdx(E_Page - S_Page + 1) As Long
>
>
>  ppApp.Visible = True
>  ppApp.WindowState = PowerPoint.PpWindowState.ppWindowMinimized
>
>  Set ppPre = ppApp.Presentations.Open(ppFile)
>
>  For i = 0 To E_Page - S_Page
>    SlideIdx(0) = i
>  Next
>
>  With ppPre.Slides.Range(SlideIdx).SlideShowTransition
>    .AdvanceOnTime = True
>    .AdvanceTime = 3
>    .EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut
>  End With
>
>  With ppPre.SlideShowSettings
>    .StartingSlide = S_Page
>    .EndingSlide = E_Page
>    boolAssist = ppApp.Assistant.On
>    ppApp.Assistant.On = False
>    .Run
>  End With
>  
>  Do While ppApp.SlideShowWindows.Count >= 1
>    DoEvents
>  Loop
>
>  If boolAssist Then
>    ppApp.Assistant.On = True
>    ppApp.Assistant.Visible = False
>  End If
>
>  ppPre.Saved = True
>  ppPre.Close
>  Set ppPre = Nothing
>  ppApp.Quit
>  Set ppApp = Nothing
>End Sub
>
>当方もパワーポイントに対して余り知識があるわけではありませんので
>何か至らない箇所があるかと思いますが、コードを試されてみてください。

【31920】Re:パワーポイントコントロール
発言  小僧  - 05/12/2(金) 11:50 -

引用なし
パスワード
   ▼IVA さん:
こんにちは。

>立ち上げたスライドショーも指定したスライドがスタートになり、
>前にも後にも自由に移動できるようにしたいのですが。

まず、こちらについては如何だったでしょうか?


>しかし、元ファイルとスライドショーの2画面が立ち上がってしまいます。

こちらの環境ですと、1回目はうまくいかなかったのですが、
2回目以降の起動ではうまくいきましたが、IVA さんも同じ様な感じでしょうか?

>  Set ppPre = ppApp.Presentations.Open(ppFile)

の前に
  Application.Visible = False

>End Sub

の前に
  Application.Visible = True

を入れてみてもあまり状況は変わりませんでしょうか。

【32070】Re:パワーポイントコントロール
発言  IVA  - 05/12/5(月) 18:04 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。
すいません。説明不足でした。
元ファイルとはエクセルから立ち上げたスライドショーで立ち上がっていないパワーポイントファイルのことです。

つまり、同じパワーポイントファイルが、そのままの状態と、スライドショーの2つが立ち上がっていることです。

なお、下記の修正を行ったら、エクセルファイルが見えなくなりました。


>>立ち上げたスライドショーも指定したスライドがスタートになり、
>>前にも後にも自由に移動できるようにしたいのですが。
>
>まず、こちらについては如何だったでしょうか?
>
>
>>しかし、元ファイルとスライドショーの2画面が立ち上がってしまいます。
>
>こちらの環境ですと、1回目はうまくいかなかったのですが、
> 2回目以降の起動ではうまくいきましたが、IVA さんも同じ様な感じでしょうか?
>
>>  Set ppPre = ppApp.Presentations.Open(ppFile)
>
>の前に
>  Application.Visible = False
>
>>End Sub
>
>の前に
>  Application.Visible = True
>
>を入れてみてもあまり状況は変わりませんでしょうか。

8645 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free