C#でPowerPoint(其の肆)スライドショー

今回は、PowerPointファイルのスライドショーをC#から呼び出してみます。

http://support.microsoft.com/kb/303718/ja
を参考にさせていただきました。

/// <summary>
/// スライドショー
/// </summary>
/// <param name="filename"></param>
public void slideShow( string filename )
{

    Microsoft.Office.Interop.PowerPoint.Application app = null;
    Microsoft.Office.Interop.PowerPoint.Presentation ppt = null;
    try {
        // PPTのインスタンス作成
        app = new Microsoft.Office.Interop.PowerPoint.Application();
        
        // 表示する
        app.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;

        // オープン
        ppt = app.Presentations.Open(filename,
            Microsoft.Office.Core.MsoTriState.msoTrue,
            Microsoft.Office.Core.MsoTriState.msoTrue,
            Microsoft.Office.Core.MsoTriState.msoTrue);

        // スライドショーのページの指定
        int[] SlideIdx = new int[ppt.Slides.Count];
        for ( int i = 0; i < SlideIdx.Length; i++ ) {
            SlideIdx[i] = i + 1;
        }

        Microsoft.Office.Interop.PowerPoint.SlideRange range;
        range = ppt.Slides.Range(SlideIdx);
        range.SlideShowTransition.AdvanceOnTime = Microsoft.Office.Core.MsoTriState.msoTrue;
        range.SlideShowTransition.AdvanceTime = 3;

        bool assistant_on = app.Assistant.On;
        app.Assistant.On = false;

        // 設定
        Microsoft.Office.Interop.PowerPoint.SlideShowSettings settings;
        settings = ppt.SlideShowSettings;

        settings.StartingSlide = 1;
        settings.EndingSlide = SlideIdx[SlideIdx.Length - 1];

        // スライドショーの開始
        settings.Run();

        // 待機する
        while ( app.SlideShowWindows.Count >= 1 ) {
            System.Threading.Thread.Sleep(100);
        }

        //Reenable Office Assisant, if it was on:
        if ( assistant_on ) {
            app.Assistant.On = true;
            app.Assistant.Visible = false;
        }
    }
    finally {
        // 終了
        if ( ppt != null ) {
            ppt.Close();
        }

        // PPTを閉じる
        if ( app != null ) {
            app.Quit();
        }
    }
}
The following two tabs change content below.

taira

Sofrware Engineer.

Comments are closed.