チュートリアル : ドキュメント レベルのカスタマイズを使用したスマート タグの作成
このチュートリアルでは、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 Smart Tag という名前の Word 2007 文書プロジェクトを作成します。 ウィザードで、[新規ドキュメントの作成] をクリックします。
詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。
新しい Word 文書がデザイナーで開き、My 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;
スマート タグの作成
スマート タグが華氏温度を表す文字列を検出し、変換できるようにするには、スマート タグで認識する用語のリストに正規表現を追加し、ユーザーがスマート タグをクリックしたときに使用できるアクションを作成します。
スマート タグを作成するには
ThisDocument クラスの ThisDocument_Startup イベント ハンドラーを次のコードに置き換えます。 このコードは、スマート タグを表す SmartTag を作成し、スマート タグで認識する用語のリストに正規表現を追加します。
WithEvents action1 As Microsoft.Office.Tools.Word.Action Private Sub ThisDocument_Startup(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Startup 'Use the following line of code in projects that target the .NET Framework 4. Dim smartTag1 As Microsoft.Office.Tools.Word.SmartTag = _ Globals.Factory.CreateSmartTag( _ "www.microsoft.com/Demo#DemoSmartTag", _ "Demonstration Smart Tag") 'In projects that target the .NET Framework 3.5, use the following line of code. 'Dim smartTag1 As New Microsoft.Office.Tools.Word.SmartTag( _ ' "www.microsoft.com/Demo#DemoSmartTag", _ ' "Demonstration Smart Tag") smartTag1.Expressions.Add( _ New Regex("(?'number'[+-]?\b[0-9]+)?\s?(F|f)\b"))
private Microsoft.Office.Tools.Word.Action action1; private void ThisDocument_Startup(object sender, System.EventArgs e) { // Use the following line of code in projects that target the .NET Framework 4. Microsoft.Office.Tools.Word.SmartTag smartTag1 = Globals.Factory.CreateSmartTag( "www.microsoft.com/Demo#DemoSmartTag", "Demonstration Smart Tag"); // In projects that target the .NET Framework 3.5, use the following line of code. //Microsoft.Office.Tools.Word.SmartTag smartTag1 = // new Microsoft.Office.Tools.Word.SmartTag( // "www.microsoft.com/Demo#DemoSmartTag", // "Demonstration Smart Tag"); smartTag1.Expressions.Add(new Regex( @"(?'number'[+-]?\b[0-9]+)�?\s?(F|f)\b"));
新しい Action を作成し、スマート タグの Actions プロパティに追加します。 Action は、スマート タグ メニューでユーザーがクリックできる項目を表します。
'Use the following line of code in projects that target the .NET Framework 4. action1 = Globals.Factory.CreateAction( _ "Convert to Celsius") 'In projects that target the .NET Framework 3.5, use the following line of code. 'action1 = New Microsoft.Office.Tools.Word.Action( _ ' "Convert to Celsius") smartTag1.Actions = _ New Microsoft.Office.Tools.Word.Action() {action1}
// Use the following line of code in projects that target the .NET Framework 4. action1 = Globals.Factory.CreateAction( "Convert to Celsius"); // In projects that target the .NET Framework 3.5, use the following line of code. //action1 = new Microsoft.Office.Tools.Word.Action( // "Convert to Celsius"); smartTag1.Actions = new Microsoft.Office.Tools.Word.Action[] {action1};
SmartTag を VstoSmartTags プロパティに追加して文書にスマート タグを追加します。 C# の場合は、このアクションの Click イベントにイベント ハンドラーを追加します。
Me.VstoSmartTags.Add(smartTag1) End Sub
this.VstoSmartTags.Add(smartTag1); action1.Click += new Microsoft.Office.Tools.Word.ActionClickEventHandler( action1_Click); }
アクションのイベント ハンドラーの作成
このイベント ハンドラーでは、スマート タグのプロパティ バッグにあるキー number から華氏温度値を取得します。 次に、華氏温度値を摂氏温度に変換し、認識された文字列を置き換えます。
この例では、スマート タグに割り当てられた正規表現によってキャプチャされるグループを、キー number で識別します。 スマート タグのプロパティ バッグおよび正規表現の詳細については、「スマート タグのアーキテクチャ」を参照してください。
イベント ハンドラーを作成するには
ThisDocument クラスに次のコードをコピーします。
Private Sub action1_Click(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _ Handles action1.Click Dim value As String = e.Properties.Read("number") Dim fahrenheit As Double = System.Convert.ToDouble(value) Dim celsius As Integer = Fix(fahrenheit - 32) * 5 / 9 e.Range.Text = celsius.ToString() + "C" End Sub
void action1_Click(object sender, Microsoft.Office.Tools.Word.ActionEventArgs e) { string value = e.Properties.get_Read("number"); double fahrenheit = System.Convert.ToDouble(value); int celsius = (int)(fahrenheit - 32) * 5 / 9; e.Range.Text = celsius.ToString() + "�C"; }
アプリケーションのテスト
文書をテストして、スマート タグで華氏温度が摂氏温度に変換されることを確認します。
ブックをテストするには
Word で、スマート タグを有効にします。
詳細については、「方法 : Word および Excel でスマート タグを有効にする」を参照してください。
F5 キーを押してプロジェクトを実行します。
スマート タグに追加した正規表現を満たす文字列を入力します。たとえば、「60F」、「60° F」、「60 F」のように入力します。
注意
温度記号 (°) を入力するには、Alt キーを押して「248」と入力します。
認識された文字列の上に表示されるスマート タグ アイコンをクリックし、[Convert to Celsius] をクリックします。
元の文字列が、摂氏温度を表す新しい文字列に置き換えられることを確認します。
参照
処理手順
方法 : Word および Excel でスマート タグを有効にする
方法: Word および .NET Framework 3.5 でカスタム レコグナイザーを持つスマート タグを作成する
方法: Excel および .NET Framework 3.5 でカスタム レコグナイザーを持つスマート タグを作成する
チュートリアル : アプリケーション レベルのアドインを使用したスマート タグの作成