チュートリアル : ドキュメント レベルのカスタマイズを使用したスマート タグの作成

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

Microsoft Office のバージョン

  • Word 2003

  • Word 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

このチュートリアルでは、Word のドキュメント レベルのカスタマイズを使用してスマート タグを作成する方法を示します。このスマート タグは、華氏温度を表す文字列を認識します。このスマート タグには、温度値を摂氏温度に変換し、認識されたテキストを摂氏温度を表すフォーマットされた文字列に置き換えるアクションが含まれます。

このスマート タグを実行するには、エンド ユーザーが Word でスマート タグを有効にする必要があります。詳細については、「方法 : Word および Excel でスマート タグを有効にする」を参照してください。

このチュートリアルでは、次のタスクについて説明します。

  • 正規表現を認識するスマート タグの作成

  • スマート タグからデータを取得し、認識されたスマート タグ テキストを変更するアクションの作成

ms268701.alert_note(ja-jp,VS.90).gifメモ :

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピュータでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

前提条件

このチュートリアルを完了するには、次のコンポーネントが必要です。

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

  • Microsoft Office Word 2003 または Microsoft Office Word 2007

ここに挙げた Visual Studio のバージョンでは、Visual Studio Tools for Office が既定でインストールされます。インストールされているかどうかを確認する方法については、「Visual Studio Tools for Office のインストール」を参照してください。

新規プロジェクトの作成

まず、Word 文書プロジェクトを作成します。

新しいプロジェクトを作成するには

新しい Word 文書がデザイナで開き、My Smart Tag プロジェクトがソリューション エクスプローラに追加されます。

プロジェクトの構成

このプロジェクトにはスマート タグ DLL への参照が必要であり、正規表現を使用することも必要です。

プロジェクトを構成するには

  1. [プロジェクト] メニューの [参照の追加] をクリックします。

  2. [COM] タブで、[Microsoft Smart Tags 2.0 Type Library] を選択し、[OK] をクリックします。

  3. ソリューション エクスプローラで ThisDocument.vb (Visual Basic の場合) または ThisDocument.cs (C# の場合) を右クリックし、[コードの表示] をクリックします。

  4. 次のコード行をファイルの先頭に追加します。

     [Visual Basic]
    Imports System.Text.RegularExpressions
    
    using System.Text.RegularExpressions;
    

スマート タグの作成

スマート タグが華氏温度を表す文字列を検出し、変換できるようにするには、スマート タグで認識する用語のリストに正規表現を追加し、ユーザーがスマート タグをクリックしたときに使用できるアクションを作成します。

スマート タグを作成するには

  1. ThisDocument クラスの ThisDocument_Startup イベント ハンドラを次のコードに置き換えます。このコードは、Visual Studio Tools for Office スマート タグを表す 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
    
        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)
    {
        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"));
    
  2. 新しい Action を作成し、スマート タグの Actions プロパティに追加します。Action は、スマート タグ メニューでユーザーがクリックできる項目を表します。

    action1 = New Microsoft.Office.Tools.Word.Action( _
        "Convert to Celsius")
    
    smartTag1.Actions = _
        New Microsoft.Office.Tools.Word.Action() {action1}
    
    action1 = new Microsoft.Office.Tools.Word.Action(
        "Convert to Celsius");
    
    smartTag1.Actions = new
        Microsoft.Office.Tools.Word.Action[] {action1};
    
  3. SmartTagVstoSmartTags プロパティに追加して文書にスマート タグを追加します。C# の場合は、このアクションの Click イベントにイベント ハンドラを追加します。

        Me.VstoSmartTags.Add(smartTag1)
    End Sub
    
        this.VstoSmartTags.Add(smartTag1);
    
        action1.Click += new
            Microsoft.Office.Tools.Word.ActionClickEventHandler(
            action1_Click);
    }
    

アクションのイベント ハンドラの作成

このイベント ハンドラでは、スマート タグのプロパティ バッグにあるキー number から華氏温度値を取得します。次に、華氏温度値を摂氏温度に変換し、認識された文字列を置き換えます。

この例では、スマート タグに割り当てられた正規表現によってキャプチャされるグループを、キー number で識別します。Visual Studio Tools for Office スマート タグのプロパティ バッグおよび正規表現の詳細については、「スマート タグのアーキテクチャ」を参照してください。

イベント ハンドラを作成するには

  • 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";
    }
    

アプリケーションのテスト

文書をテストして、スマート タグで華氏温度が摂氏温度に変換されることを確認します。

ブックをテストするには

  1. Word で、スマート タグを有効にします。

    詳細については、「方法 : Word および Excel でスマート タグを有効にする」を参照してください。

  2. F5 キーを押してプロジェクトを実行します。

  3. スマート タグに追加した正規表現を満たす文字列を入力します。たとえば、「60F」、「60° F」、「60 F」のように入力します。

    ms268701.alert_note(ja-jp,VS.90).gifメモ :

    温度記号 (°) を入力するには、Alt キーを押して「248」と入力します。

  4. 認識された文字列の上に表示されるスマート タグ アイコンをクリックし、[Convert to Celsius] をクリックします。

  5. 元の文字列が、摂氏温度を表す新しい文字列に置き換えられることを確認します。

参照

処理手順

方法 : Word および Excel でスマート タグを有効にする

方法 : Word 文書にスマート タグを追加する

方法 : Excel ブックにスマート タグを追加する

方法 : Word でカスタム レコグナイザを持つスマート タグを作成する

方法 : Excel でカスタム レコグナイザを持つスマート タグを作成する

チュートリアル : アプリケーション レベルのアドインを使用したスマート タグの作成

概念

スマート タグの概要

スマート タグのアーキテクチャ