次の方法で共有


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

このチュートリアルでは、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 への参照が必要であり、正規表現を使用することも必要です。

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

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

  2. [.NET] タブで [Microsoft.Office.Interop.SmartTag] をクリックし、[OK] をクリックします。 アセンブリの 12.0.0.0 バージョンを選択します。

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

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

    Imports System.Text.RegularExpressions
    
    using System.Text.RegularExpressions;
    

スマート タグの作成

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

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

  1. 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"));
    
  2. 新しい 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};
    
  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 で識別します。 スマート タグのプロパティ バッグおよび正規表現の詳細については、「スマート タグのアーキテクチャ」を参照してください。

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

  • 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」のように入力します。

    注意

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

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

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

参照

処理手順

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

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

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

方法: Word および .NET Framework 3.5 でカスタム レコグナイザーを持つスマート タグを作成する

方法: Excel および .NET Framework 3.5 でカスタム レコグナイザーを持つスマート タグを作成する

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

概念

スマート タグの概要

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