Office 2010とSilverlight 4の連携

2010年6月17日(木)
PROJECT KySS

PowerPointを起動してpptxファイルを開く

今度は、ボタンクリックでMicrosoft PowerPointを起動し、指定されたpptxファイルを開く方法を紹介します(図3)。

プロジェクト・ファイルは、こちらからダウンロードできます。

図3: ブラウザ外実行で、Microsoft PowerPointが起動している

作業を始める前に、PowerPointをインストール済みのPCにC:\SL4_Dataフォルダを作成し、この中に、サンプルデータ(ダウンロードしたSL4_PowerPointプロジェクト内のsampleDataフォルダ内にあるpptx_DummyData.pptx)をコピーしておいてください。

PowerPointのファイルを開くサンプルを作成する

VS 2010で新規Silverlight 4プロジェクト(プロジェクト名は「SL4_PowerPoint」)を作成し、プロジェクト依存関係を設定しておきます。

ToolboxからTextBlockとButtonを1個ずつレイアウトして、Button のContentプロパティに「PowerPoint起動」と指定します(図4)。

図4: TextBlockとButtonを1個レイアウトした

このサンプルは信頼されたTrustedモードのブラウザ外実行で動作させます。ブラウザ外実行を設定する詳しい手順および、デバッグの手順については、以前の記事を参照してください。

以上の操作で書き出されるXAMLコードは省略します。

レイアウトができたら、リスト3のようなロジック・コードを記述していきます。

リスト3: PowerPointを起動してpptxファイルを開くロジック・コード(MainPage.xaml.vb)

COMオートメーションを扱うクラスの含まれるSystem.Runtime.InteropServices.Automation名前空間をインポートします。
Imports System.Runtime.InteropServices.Automation

■[PowerPoint起動]ボタンがクリックされた時の処理
AutomationFactoryクラスのIsAvailableプロパティで、Silverlightにおけるオートメーション機能が、アプリケーションで利用可能かどうかをチェックします。同時に、HasElevatedPermissionsプロパティで、実行するアプリケーションが高い信頼性に基づいたブラウザ外で実行されているかどうかを判定し、高い信頼性に基づいている場合(Trueの場合)は、以下の処理を実行し、それ以外の場合は「インストールしてTrustedモードのブラウザ外実行で試してください。」というメッセージを表示します。
登録されたオートメーションサーバへのアクセスを行う、AutomationFactoryクラスのCreateObjectメソッドで、ProgID(PowerPoint.Application)に指定されたアプリケーションにアクセスします。
PowerPointを表示状態にし、Presentations.Openメソッドで、サンプルデータC:\SL4_Data\PowerPoint_Sample.pptx)を指定して、PowerPointを起動します。
C:\SL4_Data\PowerPoint_Sample.pptxが存在しておらず、例外が発生した場合は、メッセージを表示します。

  Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
    If AutomationFactory.IsAvailable = True AndAlso App.Current.HasElevatedPermissions = True Then
      Dim myPowerPoint As Object = AutomationFactory.CreateObject("PowerPoint.Application")
      Try
        myPowerPoint.Visible = True
        myPowerPoint.Presentations.Open("C:\SL4_Data\pptx_DummyData.pptx")
      Catch
        MessageBox.Show("C:\SL4_Data\pptx_DummyData.pptxがありません。")
        Exit Sub
      End Try
    Else
      MessageBox.Show("インストールしてTrustedモードのブラウザ外実行で試してください。")
      Exit Sub
    End If
  End Sub

四国のSOHO。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。1997年6月、Dynamic HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。最新刊は「Silverlight実践プログラミング」両名とも、Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。http://www.PROJECTKySS.NET/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています