F. API ドキュメンテーション
think-cellを使用すると、API を介して一部の機能をプログラムで制御できます。ここでは、利用可能なすべての API 関数の概要と、開発環境をセットアップしてマクロ、アドイン、またはそれらにアクセスするスタンドアロン プログラムを作成する方法の一般的な手順を確認できます。
F.1 はじめに
このインターフェイスは Office Automation モデルに統合されているため、Visual Basic for Applications や C# などの Office をプログラミングできるどんな言語からもアクセスできます。
think-cellへのエントリ ポイントは、think-cellアドイン オブジェクトです。これには Application.COMAddIns
コレクションからアクセスできます。think-cellへの呼び出しは常に遅延バインドされるため、追加するタイプ ライブラリや参照はありません。詳細は Microsoft のサポート技術情報を参照してください。
一部の API 関数は、PowerPoint のthink-cellアドイン オブジェクトのメソッドであり、Excel の一部のthink-cellアドイン オブジェクトのメソッドです。PowerPoint アドインへの参照には tcPpAddIn
を使用し、Excel アドインへの参照には tcXlAddIn
を使用します。
F.1.1 Visual Basic for Applications
Visual Basic for Applications (VBA) を使用してマクロを作成するには、Office ホスト アプリケーションに統合された開発環境を使用します。これには、Alt+F11 を押すことでアクセスできます。通常、マクロの定義はモジュールに含まれており、[挿入] → [モジュール] を介して追加できます。Alt+F8 を押すと、特定のドキュメントに定義されているすべてのマクロを表示できます。
think-cellアドインへのメソッド呼び出しが遅延バインディングであることを示すには、それへの参照を含む変数を Object
として宣言する必要があります。
Office ホスト アプリケーションのタイプ ライブラリは、既定で常に参照されます。別の Office アプリケーションのオブジェクト モデルにアクセスする必要がある場合は、そのタイプ ライブラリを参照として追加する必要があります。
たとえば、Excel シートからthink-cellグラフを更新する前に、PowerPoint でマクロを使用して Excel シートのデータを操作する場合、VBA 開発環境の [ツール] → [参照] ダイアログから Microsoft Excel 16.0 オブジェクト ライブラリを手動で追加する必要があります。
注記: 16.0 は、Office 2016 以降のバージョン番号です。Office 2010 または 2013 の場合、それぞれ 14.0 または 15.0 オブジェクト ライブラリを使用する必要があります。Office の複数のバージョンがインストールされている場合、[参照] ダイアログには、インストールされている最新バージョンのオブジェクト ライブラリのみが表示されます。以下では、Office 2016 以降を使用していることを前提としています。
Application.COMAddIns("thinkcell.addin").Object
を使用すると、現在の Office ホスト アプリケーションのthink-cellアドイン オブジェクトが常に取得されます。これは、PowerPoint または Excel のどちらで使用するかに応じて、tcPpAddIn
または tcXlAddIn
です。他の Office アプリケーションでアドイン オブジェクトへの参照を取得し、それが公開する API 関数にアクセスするには、適切なアプリケーション インスタンスを介して取得します。
たとえば、PowerPoint から tcXlAddIn
への参照を取得するには、次のようにします。
これには、Excel オブジェクト ライブラリを参照として追加する必要があることに注意してください。
すべての変数の明示的な宣言を強制する Option Explicit
ステートメントを使用することをお勧めします。これにより、一般的なプログラミング エラーを回避し、IntelliSense によって提供される提案が改善されます。[ツール]→[オプション]→[コード設定]→[変数宣言が必要]を有効にすることで、すべてのモジュールに自動的に追加できます。これは、すべてのコード サンプルに含まれています。
F.1.2 C#
C# からthink-cellAPI を使用して、Office ホスト アプリケーション内で実行されるアドインおよびドキュメント コード拡張を開発するとき、およびスタンドアロン アプリケーションを開発するときに使用できます。
以下では、Visual Studio 2017 以降を使用して C# で Office ソリューションを開発していることを前提としています。アドイン開発のためのより具体的なセットアップ手順については、次のセクションを参照してください。各コード サンプルでは、使用する Visual Studio プロジェクト テンプレートを示します。
think-cellアドイン オブジェクトへのメソッド呼び出しをレイト バインドするには、think-cellアドイン オブジェクトへの参照を含む変数を dynamic
として宣言します。 これは、参照を var
として宣言するときにコンパイラによって推論される型でもあるため、次のように簡単に記述できます。
ここで ppapp
は、think-cellが読み込まれる PowerPoint Application
オブジェクトへの参照です。
Office アプリケーションのオブジェクト モデルにアクセスするには、そのタイプ ライブラリまたはプライマリ相互運用機能アセンブリ (PIA) をプロジェクトへの参照として追加する必要があります。可能な場合はタイプ ライブラリを追加することをお勧めします。これは、Visual Studio が対応する PIA への参照を自動的に追加するためです (使用可能な場合)。タイプ ライブラリがない場合は、タイプ ライブラリから相互運用アセンブリを生成します (こちらを参照)。.
たとえば、上記のthink-cellアドイン オブジェクトへの参照を取得できるようにするには、[参照マネージャー] ダイアログの [COM] → [タイプ ライブラリ] タブにある Microsoft PowerPoint 16.0 オブジェクト ライブラリを追加します。プロジェクト タイプに応じて、このダイアログにアクセスするには、ソリューション エクスプローラーで [参照] または [依存関係] を右クリックし、[(COM) 参照の追加] を選択します。
注記: 16.0 は、Office 2016 以降のバージョン番号です。COM タイプ ライブラリへの参照に対して既定で有効になっている [相互運用型の埋め込み] オプションを使用することにより、この参照でコンパイルされたアプリケーションは、使用されるすべてのインターフェイスがオブジェクト モデルに存在する限り、他のバージョンの Office と下位 (および上位) 互換性があります。詳細については、こちらをご覧ください。
think-cellの API 関数は、COM HRESULT
を使用してエラーを示します。これらの一部は、対応する .NET 例外クラスに自動的にマップされます。「方法: HRESULT と例外をマップする」を参照してください。
F.1.2.1 アドインの開発
Office のアドイン、または Office ドキュメントのコード拡張機能を開発するには、PowerPoint/
選択したテンプレートの Office ホスト アプリケーションの PIA は、既定で常に読み込まれます。別の Office アプリケーションのオブジェクト モデルにアクセスする必要がある場合は、上記で説明したように、そのタイプ ライブラリを参照として追加する必要があります。
注記:think-cellの API は Office Web アドイン—からは使用できません。残念ながら現在、Microsoft— では単に「Office アドイン」と呼ばれています。Office アプリケーションのオブジェクト モデルと直接対話することはできず、特にthink-cellなどの COM アドインと対話することはできません。
F.2 API 参照
- F.2.1
- 要素とプレゼンテーション テンプレートを Excel データで更新する
- F.2.2
- スタイルの制御
- F.2.3
- マリメッコ グラフィック グラフのインポート
- F.2.4
- Miscellaneous
F.2.1 要素とプレゼンテーション テンプレートを Excel データで更新する
このセクションの関数を使用して、通常はプレゼンテーション テンプレート内のプレースホルダーであるthink-cell要素を Excel のデータでプログラム的に更新できます。 UpdateChart
テンプレートで割り当てられた名前で指定されたthink-cell要素を、引数として渡された Excel 範囲のデータで更新します。テンプレートの作成方法については、24. オートメーション機能のご紹介 も参照してください。
PresentationFromTemplate
リンクされた Excel ワークブックのデータを使用してプレゼンテーション テンプレートをインスタンス化します。Excel リンクの作成方法については、21. Excel データ リンク も参照してください。
このセクションの関数は、Excel の think-cell アドインのメソッドです。
F.2.1.1 グラフの更新
F.2.1.1.1 署名
VBA
C#
F.2.1.1.2 説明
この関数は、target
内の strName
という名前のすべての要素を、rgData
に含まれるデータで更新します。データがグラフで正しく解釈されるためには、範囲 rgData
が既定のデータシート レイアウトまたはその転置されたバージョンに準拠している必要があります。Excel からのグラフ作成 および データレイアウトの調整 も参照してください。bTransposed
をそれぞれ false
または true
に設定することで、既定バージョンまたは転置バージョンのどちらを使用するかが示されます。グラフ以外の要素、たとえば表の場合、bTransposed
の値は無視されます。
target
Presentation
または SlideRange
、または単一の Slide
、Master
、または CustomLayout
でなければなりません。
グラフ名 strName
は大文字と小文字を区別して整合されます。この機能は以前、 にあるUpdateChart Name24. オートメーション機能のご紹介 プロパティ コントロールを使用してPowerPoint に割り当てられていました。
正しい要素がターゲットにされていることを確認するには、pres
として渡されたオブジェクトで UpdateChart 名が strName
に設定されている唯一の要素であることを確認してください。
この関数を呼び出すときにグラフが何らかの Excel データの範囲にリンクされていると、リンクが切断されます。その後、グラフはいかなる Excel の範囲にもリンクされません。
F.2.1.1.3 例
これらのサンプルを使用するには、24. オートメーション機能のご紹介 の説明に従ってプレゼンテーションを準備し、C:\Samples\UpdateChart\template.pptx
として保存します。
VBA
このサンプルを使用するには、Excel ワークブックのモジュールに追加します。
Microsoft PowerPoint 16.0 オブジェクト ライブラリへの参照が必要です (詳細については Visual Basic for Applications を参照してください)。
ワークブックで UpdateChart_Sample
を実行すると、最初のシートの範囲 A1:D5
に含まれるデータでプレゼンテーション テンプレートのグラフが更新されます。
C#
このサンプルを使用するには、C# コンソール アプリ プロジェクト テンプレートの Program.cs
内のコードをそれに置き換えます。
Microsoft PowerPoint 16.0 オブジェクト ライブラリ、Microsoft Excel 16.0 オブジェクト ライブラリ、Microsoft Office 16.0 オブジェクト ライブラリへの参照が必要です (詳細については、C# を参照してください)。
結果のアプリケーションを実行すると、プレゼンテーション テンプレートのグラフが更新され、値が 1、2、3 の「系列 1」という名前の単一の系列が含まれるようになり、結果が template_updated.pptx
として保存されます。
F.2.1.2 テンプレートからのプレゼンテーション
F.2.1.2.1 署名
VBA
C#
F.2.1.2.2 説明
この関数は、Excel ワークブック wb
とファイル名が strTemplate
のテンプレートとの間のデータ リンクを使用して、リンク先の範囲のデータでリンクされた要素を更新することにより、そのテンプレートをインスタンス化します。その結果、PowerPoint インスタンス ppapp
内に新しいプレゼンテーションが作成されます。
strTemplate
は完全なパスでも相対パスでもかまいませんが、その後、Excel のワークブックファイル の場所に関連付けられます。wb
Excel ワークブックwb
にリンクされている strTemplate
のすべてのグラフは、(自動更新に設定されているかどうかに関係なく) 更新されます。結果のプレゼンテーションでは、これらの要素がさらに変更されるのを防ぐために、それらのデータ リンクが壊れています。
wb
以外の Excelワークブックにリンクされている strTemplate
の要素は変更されずにリンクされているため、この関数の結果を新しいテンプレートとして保存して次のワークブックでこの関数を再度呼び出すことで、複数の Excelワークブックからリンクを更新できます。
Excel リンクを使用してグラフ セグメントの色またはテーブル セルのフォーマットを制御する場合は、配色を [トップでデータシートの塗りつぶしを使用] (配色 を参照) または [データシートを使用...] オプション (表の書式設定 を参照) にそれぞれ設定できます。同様に、Excel リンクで表示形式をコントロールするには、[Excel の書式設定を使用する] に設定します (数値形式参照)。
PresentationFromTemplate
を呼び出す前に、Excel の各セルの背景色と数値形式を設定してください。
F.2.1.2.3 例
これらのサンプルを使用するには、まず Excel からのグラフ作成 で説明されているように、Excel ワークブックの最初のシートの範囲 G1:K4
にリンクされた積み上げグラフを含むプレゼンテーションを作成します。結果のプレゼンテーションを C:\Samples\PresentationFromTemplate\template.pptx
として保存し、ワークブックを data.xlsx
として同じディレクトリに保存します。
VBA
このサンプルを使用するには、上記で準備した Excel ワークブック data.xlsx
のモジュールに追加します。
Microsoft PowerPoint 16.0 オブジェクト ライブラリへの参照が必要です (詳細については Visual Basic for Applications を参照してください)。
PresentationFromTemplate_Sample
を実行すると、template.pptx
に含まれるチャートの最初の系列の最初の値にリンクされているセル Sheet1!H3
の値が i=1
から 10
に変更され、その値を含むように更新されたテンプレート内のチャートで新しいプレゼンテーションが作成されます。 これはワークブックにリンクされなくなり、テンプレートと同じディレクトリに output_i.pptx
として保存します。
C#
このサンプルを使用するには、C# コンソール アプリ プロジェクト テンプレートの Program.cs
内のコードをそれに置き換えます。
Microsoft PowerPoint 16.0 オブジェクト ライブラリ、Microsoft Excel 16.0 オブジェクト ライブラリ、Microsoft Office 16.0 オブジェクト ライブラリへの参照が必要です (詳細については、C# を参照してください)。
結果のアプリケーションを実行すると、目に見えて Excel が開き、ワークブック data.xlsx
が読み込まれ、template.pptx
に含まれるチャートの最初の系列の最初の値にリンクされているセル H3
の値が i=1
から 10
に変更され、その値を含むように更新されたテンプレート内のチャートで新しいプレゼンテーションが作成されます。 これはワークブックにリンクされなくなり、テンプレートと同じディレクトリに output_i.pptx
として保存します。
F.2.2 スタイルの制御
このセクションの関数を使用して、プログラムでthink-cellスタイルの読み込み、検査、削除を行うことができます。 LoadStyle
スタイル ファイルからマスター スライドまたは単一のカスタム レイアウトにスタイルを読み込みます。 LoadStyleForRegion
スタイル ファイルからカスタム レイアウトの特定の領域にスタイルを読み込みます。 GetStyleName
マスターまたはカスタム レイアウトに読み込まれたスタイルの名前を返します。 RemoveStyles
カスタム レイアウトからすべてのスタイルを削除します。
スタイルの作成と編集の詳細については、think-cell スタイルの作成 と D. スタイル ファイル形式 を参照してください。それらの読み込みに関する詳細は、スタイルファイルの読み込み を参照してください。
このセクションの関数は、PowerPoint の think-cell アドインのメソッドです。
F.2.2.1 LoadStyle
F.2.2.1.1 署名
VBA
C#
F.2.2.1.2 説明
PowerPointから読みだされたこの機能は、FileName
のスタイルファイルをパラメーター CustomLayoutOrMaster
経由で指定されたマスターまたはカスタムレイアウトに読み込みます。
CustomLayoutOrMaster
CustomLayout
または Master
でなければなりません。
地域スタイルが設定されているカスタム レイアウトに適用すると (LoadStyleForRegion を参照)、地域スタイルは削除されます。これは、地域に制限されたスタイルをロードする前に、この関数を使用してスライドの残りの部分に適用するスタイルをロードする必要があることを意味します。
マスターに適用すると、そのマスターに含まれるカスタム レイアウトに読み込まれたスタイル (地域および無制限) が削除されます。これは、この関数を使用して特定のカスタム レイアウトに適用するスタイルを読み込む前に、特定のスタイルを持たないカスタム レイアウトに適用するスタイルをマスターに読み込む必要があることを意味します。
F.2.2.1.3 例
VBA
このサンプルを使用するには、次のコードを PowerPoint のモジュールに追加します (詳細については、Visual Basic for Applications を参照してください)。
F.2.2.2 LoadStyleForRegion
F.2.2.2.1 署名
VBA
C#
F.2.2.2.2 説明
PowerPointから呼び出されたこの機能は、「FileName
」のスタイルファイルをカスタムレイアウト「CustomLayout
」に読み込み、適用範囲をLeft
、Top
、Width
、Height
によって指定された領域に制限します。スライドの残りの部分では、マスターに読み込まれたスタイル、または以前に LoadStyle
を使用してカスタム レイアウトに読み込まれたスタイルが適用されます。
パラメーター Left
、Top
、Width
、Height
は、PowerPoint ポイントで指定されます。 Left
および Top
は、カスタム レイアウトの左端および上端から領域の左端および上端までの距離をそれぞれ指定します。通常、これらのパラメーターはスライド全体の高さと幅の一部として設定します。たとえば、カスタム レイアウトの右側の 3 分の 2 をカバーする地域の場合、次のように設定します。
また、スライドやカスタムレイアウトに手動で図形を追加することや、プログラムで図形のプロパティ、Left
、Top
、Width
、Height
をクエリすること、LoadStyleForRegion
と数値を使用してスタイルを図形で覆われている同じ領域に制限することもできます。
カスタムレイアウト1件につきthink-cellは最大2つのスタイルをサポートします。ひとつはLoadStyle
を使用して設定し、領域に制限されていない部分すべてに適用されるスタイルで、もうひとつはLoadStyleForRegion
を使用して設定するスタイルとなります。
F.2.2.2.3 例
VBA
このサンプルを使用するには、次のコードを PowerPoint のモジュールに追加します (詳細については、Visual Basic for Applications を参照してください)。
F.2.2.3 GetStyleName
think-cell13 以降でサポートされます。
F.2.2.3.1 署名
VBA
C#
F.2.2.3.2 説明
この関数は、CustomLayout
または Master
CustomLayoutOrMaster
に読み込まれたスタイルの名前を返します。これは、対応するスタイル ファイルの <style>
要素の name
属性に指定されている名前と同じです (style を参照)。
スタイルが CustomLayoutOrMaster
に読み込まれていない場合は、空の文字列を返します。think-cell がアクティブな場合、マスターには常にスタイルが読み込まれており、スタイルの名前を空にすることはできないことに注意してください。
CustomLayout
に対して名前が返された場合、それは LoadStyle で読み込またスタイルの名前であり、LoadStyleForRegion で読み込まれたスタイルの名前ではありません。
F.2.2.3.3 例
VBA
このサンプルを使用するには、次のコードを PowerPoint のモジュールに追加します (詳細については、Visual Basic for Applications を参照してください)。
F.2.2.4 RemoveStyles
F.2.2.4.1 署名
VBA
C#
F.2.2.4.2 説明
PowerPointから呼び出されたこの機能は、カスタムレイアウトCustomLayout
からすべてのスタイルを削除します。その後、マスターに読み込まれたスタイルが適用されます。カスタムレイアウトにスタイルが読み込まれており、別のスタイルがカスタムレイズとの指定の領域に制限されている可能性があります。RemoveStyles
はすべてのスタイルを削除するため、この両方が削除されます。マスターには常に有効なスタイルを関連付ける必要があるため、マスターに読み込まれたスタイルは削除できません。別のスタイルファイルで上書きすることはできます。
F.2.2.4.3 例
VBA
このサンプルを使用するには、次のコードを PowerPoint のモジュールに追加します (詳細については、Visual Basic for Applications を参照してください)。
F.2.3 マリメッコ グラフィック グラフのインポート
このセクションの関数を使用すると、マリメッコ グラフィックで作成されたグラフをプログラムでthink-cellにインポートして検査できます。 ImportMekkoGraphicsCharts
マリメッコ グラフィック グラフを同等のthink-cellグラフに置き換えます。 GetMekkoGraphicsXML
マリメッコ グラフィック グラフの XML 定義を抽出します。
このセクションの関数は、PowerPoint の think-cell アドインのメソッドです。
F.2.3.1 ImportMekkoGraphicsCharts
think-cell13 以降でサポートされます。
F.2.3.1.1 署名
VBA
C#
F.2.3.1.2 説明
この関数は、渡された Shape
の配列内のすべてのマリメッコ グラフィック グラフを同等のthink-cellグラフに置き換えます。図形はすべて、同じスライド上になくてはなりません。スライドを変更する前に、この関数は未変更のスライドのコピーを作成し、変更されたバージョンの直後に挿入します。
この関数は、このコピーが作成されている場合、そのコピーへの参照を返します。
たとえば、配列にマリメッコ グラフィック グラフが含まれていないなどの理由で、プレゼンテーションが変更されなかった場合は、Nothing
/null
を返します。
F.2.3.1.3 例
VBA
このサンプルを使用するには、PowerPoint のモジュールに追加します (詳細については、Visual Basic for Applications を参照)」。
プレゼンテーションで ImportAll
を実行すると、プレゼンテーション内のスライドが調べられ、表示されているすべてのマリメッコ グラフィック グラフが同等のthink-cellグラフに置き換えられ、変更する前に、そのグラフを含む各スライドのコピーが作成されます。
C#
このサンプルを使用するには、このメソッドを C# PowerPoint VSTO アドイン プロジェクト テンプレートの ThisAddIn
クラスに追加します (詳細については、C# と アドインの開発 を参照)。
次の行を ThisAddIn_Startup
メソッドに追加して、開かれているプレゼンテーションごとに ImportAll
を実行します。
F.2.3.2 GetMekkoGraphicsXML
think-cell13 以降でサポートされます。
F.2.3.2.1 署名
VBA
C#
F.2.3.2.2 説明
この関数は、shp
内のマリメッコ グラフィック グラフの XML を文字列として返します。渡された形状は変更されません。
shp
がマリメッコ グラフィック グラフではない場合、E_INVALIDARG (0x80070057)
エラーが発生します。
F.2.3.2.3 例
VBA
このサンプルを使用するには、次のコードを PowerPoint のモジュールに追加します (詳細については、Visual Basic for Applications を参照してください)。
C#
このサンプルを使用するには、コンソール アプリの Program.cs
内のコードをそれに置き換えます。
Microsoft PowerPoint 16.0 オブジェクト ライブラリおよび Microsoft Office 16.0 オブジェクト ライブラリへの参照が必要です (詳細については、C# を参照)。
アプリケーションを実行すると、C:\Samples\GetMekkoGraphicsXML\presentation.pptx
のプレゼンテーションが実行され、それに含まれるマリメッコ グラフィック グラフの XML がコンソールに出力されます。
F.2.4 Miscellaneous
このセクションの関数は、PowerPoint の think-cell アドインのメソッドです。
F.2.4.1 StartTableInsertion
think-cell13 以降でサポートされます。
F.2.4.1.1 署名
VBA
C#
F.2.4.1.2 説明
このメソッドを呼び出すと、PowerPoint の [要素] メニューで [表] をクリックするのと同じ効果があります。