チュートリアル : アプリケーション レベルのアドインを使用したスマート タグの作成
このチュートリアルでは、開いているすべてのドキュメントで使用できるアプリケーション レベルのスマート タグを作成する方法について説明します。 このスマート タグは、Microsoft Office Word 文書に記されているさじ分量を認識し、その分量をオンスに変換するアクションを実行します。 そして、さじ分量の後に、その分量をオンスに変換した分量をかっこに入れて追加します。
対象: このトピックの情報は、Word 2007 のアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
このスマート タグを実行するには、エンド ユーザーが Word でスマート タグを有効にする必要があります。 詳細については、「方法 : Word および Excel でスマート タグを有効にする」を参照してください。
このチュートリアルでは、次の作業について説明します。
正規表現を使用して文字列を認識するスマート タグの作成
スマート タグからデータを取得し、認識されたスマート タグ テキストを変更するアクションの作成
注意
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。 詳細については、「設定の操作」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office 開発者ツールを含むエディションの Visual Studio 2010。 詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.100\).md)」を参照してください。
Word 2007
.NET Framework 3.5。
注意
.NET Framework 4 を対象とする場合は、スマート タグとアクションを作成するために別のコードを記述する必要があります。 詳細については、「スマート タグのアーキテクチャ」を参照してください。
新規プロジェクトの作成
まず、Word アドイン プロジェクトを作成します。
新しいプロジェクトを作成するには
Visual Basic または C# を使用して、My Recipe Smart Tag という名前の Word 2007 アドイン プロジェクトを作成します。
詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。
Visual Studio により、My Recipe Smart Tag プロジェクトがソリューション エクスプローラーに追加されます。
プロジェクトの構成
このプロジェクトにはスマート タグ DLL への参照が必要であり、正規表現を使用することも必要です。
プロジェクトを構成するには
[プロジェクト] メニューの [参照の追加] をクリックします。
[.NET] タブで [Microsoft.Office.Interop.SmartTag] をクリックし、[OK] をクリックします。 アセンブリの 12.0.0.0 バージョンを選択します。
ソリューション エクスプローラーで ThisDocument.vb (Visual Basic の場合) または ThisDocument.cs (C# の場合) を右クリックし、[コードの表示] をクリックします。
次のコード行をファイルの先頭に追加します。
Imports System.Text.RegularExpressions
using System.Text.RegularExpressions;
スマート タグの作成
スマート タグがさじ分量を検出して変換できるようにするために、スマート タグで認識する用語のリストに正規表現を追加し、ユーザーがスマート タグをクリックしたときに使用できるアクションを作成します。
スマート タグを作成するには
ThisAddIn クラスの ThisAddIn_Startup イベント ハンドラーを次のコードに置き換えます。 このコードは、スマート タグを表す SmartTag を作成し、スマート タグで認識する用語のリストに正規表現を追加します。
WithEvents RecipeAction As Microsoft.Office.Tools.Word.Action Private Sub ThisAddIn_Startup(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Startup Dim SmartTagDemo As New Microsoft.Office.Tools.Word.SmartTag( _ "www.microsoft.com/Demo#DemoSmartTag", "Recipe Smart Tag") SmartTagDemo.Expressions.Add(New Regex( _ "(?'tbsNumber'[+-]?\b[0-9]+)?\s?(tbs|tablespoons|tablespoon)\b"))
private Microsoft.Office.Tools.Word.Action RecipeAction; private void ThisAddIn_Startup(object sender, System.EventArgs e) { Microsoft.Office.Tools.Word.SmartTag SmartTagDemo = new Microsoft.Office.Tools.Word.SmartTag( @"www.microsoft.com/Demo#DemoSmartTag", @"Recipe Smart Tag"); // Specify the terms to recognize. SmartTagDemo.Expressions.Add(new Regex( @"(?'tbsNumber'[+-]?\b[0-9]+)?\s?(tbs|tablespoons|tablespoon)\b"));
新しい Action を作成し、スマート タグの Actions プロパティに追加します。 Action は、スマート タグ メニューでユーザーがクリックできる項目を表します。
RecipeAction = New Microsoft.Office.Tools.Word.Action("Convert to ounces") SmartTagDemo.Actions = New Microsoft.Office.Tools.Word.Action() {RecipeAction}
RecipeAction = new Microsoft.Office.Tools.Word.Action( @"Convert to ounces"); // Add the action to the smart tag. SmartTagDemo.Actions = new Microsoft.Office.Tools.Word.Action[] { RecipeAction };
スマート タグを ThisAddIn クラスの VstoSmartTags プロパティに追加します。 C# の場合は、このアクションの Click イベントにイベント ハンドラーを追加します。
Me.VstoSmartTags.Add(SmartTagDemo) End Sub
// Add the smart tag to the document. this.VstoSmartTags.Add(SmartTagDemo); RecipeAction.Click += new Microsoft.Office.Tools.Word.ActionClickEventHandler( RecipeAction_Click); }
アクションのイベント ハンドラーの作成
このイベント ハンドラーでは、スマート タグのプロパティ バッグにあるキー tbsNumber からさじ分量を取得します。 次に、さじ分量をオンスに変換し、そのオンス値をさじ分量の後にかっこに入れて追加します。
この例では、スマート タグに割り当てられた正規表現によってキャプチャされるグループを、キー tbsNumber で識別します。 スマート タグのプロパティ バッグおよび正規表現の詳細については、「スマート タグのアーキテクチャ」を参照してください。
イベント ハンドラーを作成するには
ThisAddIn クラスに次のコードをコピーします。
Private Sub RecipeAction_Click(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _ Handles RecipeAction.Click Dim value As String = e.Properties.Read("tbsNumber") Dim tbsRecipeAmount As Double = System.Convert.ToDouble(value) Dim ozRecipeAmount As Double = tbsRecipeAmount * 0.5 e.Range.InsertAfter(" (" + ozRecipeAmount.ToString() + " oz)") End Sub
private void RecipeAction_Click(object sender, Microsoft.Office.Tools.Word.ActionEventArgs e) { string value = e.Properties.get_Read(@"tbsNumber"); double tbsRecipeAmount = System.Convert.ToDouble(value); double ozRecipeAmount = tbsRecipeAmount * 0.5; e.Range.InsertAfter(" (" + ozRecipeAmount.ToString() + " oz)"); }
アプリケーションのテスト
文書をテストして、スマート タグでさじ分量がオンスに変換されることを確認します。
ブックをテストするには
Word で、スマート タグを有効にします。
詳細については、「方法 : Word および Excel でスマート タグを有効にする」を参照してください。
F5 キーを押してプロジェクトを実行します。
Word 文書で、「1 tablespoon salt」と入力します。
[1 tablespoon] の上に表示されるスマート タグ アイコンをクリックし、[Convert to ounces] をクリックします。
さじ分量の後にその分量をオンスで表した値が表示されることを確認します。
参照
処理手順
方法 : Word および Excel でスマート タグを有効にする
方法: Word および .NET Framework 3.5 でカスタム レコグナイザーを持つスマート タグを作成する
方法: Excel および .NET Framework 3.5 でカスタム レコグナイザーを持つスマート タグを作成する
チュートリアル : ドキュメント レベルのカスタマイズを使用したスマート タグの作成