다음을 통해 공유


스마트 태그 아키텍처

Visual Studio 2010의 Office 개발 도구에서는 융통성 있는 스마트 태그 개체 모델을 통해 Microsoft Office Word 문서 및 Microsoft Office Excel 통합 문서에 스마트 태그를 빠르게 추가할 수 있습니다. 고급 시나리오의 경우에는 자체의 스마트 태그 인식자를 만들어 스마트 태그에 저장된 데이터에 액세스할 수도 있습니다.

스마트 태그에 대한 자세한 내용은 스마트 태그 개요를 참조하십시오.

적용 대상: 이 항목의 정보는 Excel 2007 및 Word 2007의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

개체 모델 개요

스마트 태그 개체 모델에서는 스마트 태그와 스마트 태그에서 수행하는 작업을 분리합니다. 다음 단원에서는 스마트 태그를 만드는 데 사용하는 주요 개체에 대해 설명합니다. 스마트 태그를 문서에 추가하는 방법을 보여 주는 코드 예제는 방법: Word 문서에 스마트 태그 추가방법: Excel 통합 문서에 스마트 태그 추가를 참조하십시오.

스마트 태그

코드에서 스마트 태그는 Microsoft.Office.Tools.Word.SmartTag 또는 Microsoft.Office.Tools.Excel.SmartTag 개체입니다. 이러한 개체에는 다음 속성이 포함됩니다.

  • TermsExpressions. 이러한 속성에는 스마트 태그를 위한 인식 가능한 용어가 포함됩니다. 간단한 문자열을 지정하려면 문자열을 Terms 속성에 추가합니다. 복잡한 문자열을 지정하려면 문자열을 설명하는 정규식을 Expressions 속성에 추가합니다.

  • Actions. 이 속성에는 사용자가 스마트 태그를 선택할 때 수행할 작업이 포함됩니다.

  • Caption. 이 속성은 스마트 태그의 레이블을 지정합니다.

작업

사용자가 스마트 태그를 선택할 때는 스마트 태그와 관련된 하나 이상의 작업을 수행할 수 있습니다. 각 작업은 Microsoft.Office.Tools.Word.Action 또는 Microsoft.Office.Tools.Excel.Action 개체로 표현됩니다. 이러한 개체는BeforeCaptionShow 및 Click 이벤트를 제공합니다.

  • BeforeCaptionShow 이벤트는 사용자가 스마트 태그 아이콘을 클릭한 직후 스마트 태그 메뉴가 표시되기 전에 발생합니다. 런타임에 스마트 태그 메뉴의 작업 제목을 수정하려는 경우에 이 이벤트를 처리합니다.

  • Click 이벤트는 사용자가 스마트 태그 메뉴에서 작업 제목을 클릭하면 발생합니다. 사용자가 작업을 클릭하면 이 이벤트를 처리하여 코드를 실행합니다.

이러한 이벤트의 이벤트 처리기는 인식된 텍스트와 해당 텍스트의 위치에 액세스할 수 있게 해 주는 Microsoft.Office.Tools.Excel.ActionEventArgs 또는 Microsoft.Office.Tools.Word.ActionEventArgs 개체를 받습니다.

스마트 태그 만들기

스마트 태그를 만드는 방법은 프로젝트의 대상이 .NET Framework 3.5인지 .NET Framework 4인지에 따라 다릅니다.

.NET Framework 3.5를 대상으로 하는 경우 SmartTag 및 Action은 사용자가 직접 인스턴스화할 수 있는 클래스입니다. 다음 코드 예제에서는 .NET Framework 3.5를 대상으로 하는 Word 프로젝트에서 간단한 스마트 태그를 만드는 방법을 보여 줍니다. 이 예제를 사용하려면 문서 수준 프로젝트의 ThisDocument 클래스나 응용 프로그램 수준 프로젝트의 ThisAddIn 클래스에서 코드를 실행합니다.

Dim simpleSmartTag As Microsoft.Office.Tools.Word.SmartTag =
        New Microsoft.Office.Tools.Word.SmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Test Smart Tag")
Dim simpleAction As Microsoft.Office.Tools.Word.Action = 
    New Microsoft.Office.Tools.Word.Action("Test Action")

simpleSmartTag.Terms.Add("blue")
simpleSmartTag.Actions = New Microsoft.Office.Tools.Word.Action() { _
    simpleAction}
Me.VstoSmartTags.Add(simpleSmartTag)
Microsoft.Office.Tools.Word.SmartTag simpleSmartTag =
    new Microsoft.Office.Tools.Word.SmartTag(
    "www.microsoft.com/Demo#DemoSmartTag",
    "Test Smart Tag");
Microsoft.Office.Tools.Word.Action simpleAction = 
    new Microsoft.Office.Tools.Word.Action("Test Action");

simpleSmartTag.Terms.Add("blue");
simpleSmartTag.Actions = new Microsoft.Office.Tools.Word.Action[] { 
    simpleAction };
this.VstoSmartTags.Add(simpleSmartTag);

.NET Framework 4을 대상으로 하는 경우 SmartTag 및 Action은 사용자가 직접 인스턴스화할 수 없는 인터페이스입니다. 대신 프로젝트의 Globals 클래스에서 제공하는 CreateSmartTag 및 CreateAction 메서드를 사용하여 이러한 개체의 인스턴스를 가져와야 합니다. Globals 클래스에 대한 자세한 내용은 Office 프로젝트의 개체에 전역 액세스를 참조하십시오. 다음 코드 예제에서는 .NET Framework 4을 대상으로 하는 Word 프로젝트에서 간단한 스마트 태그를 만드는 방법을 보여 줍니다. 이 예제를 사용하려면 문서 수준 프로젝트의 ThisDocument 클래스나 응용 프로그램 수준 프로젝트의 ThisAddIn 클래스에서 코드를 실행합니다.

Dim simpleSmartTag As Microsoft.Office.Tools.Word.SmartTag =
    Globals.Factory.CreateSmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Test Smart Tag")
Dim simpleAction As Microsoft.Office.Tools.Word.Action =
    Globals.Factory.CreateAction("Test Action")

simpleSmartTag.Terms.Add("blue")
simpleSmartTag.Actions = New Microsoft.Office.Tools.Word.Action() { _
    simpleAction}
Me.VstoSmartTags.Add(simpleSmartTag)
Microsoft.Office.Tools.Word.SmartTag simpleSmartTag =
    Globals.Factory.CreateSmartTag(
    "www.microsoft.com/Demo#DemoSmartTag",
    "Test Smart Tag");
Microsoft.Office.Tools.Word.Action simpleAction =
    Globals.Factory.CreateAction("Test Action");

simpleSmartTag.Terms.Add("blue");
simpleSmartTag.Actions = new Microsoft.Office.Tools.Word.Action[] { 
    simpleAction };
this.VstoSmartTags.Add(simpleSmartTag);

보다 세부적인 지침과 좀 더 복잡한 스마트 태그를 보여 주는 코드 예제는 방법: Word 문서에 스마트 태그 추가방법: Excel 통합 문서에 스마트 태그 추가를 참조하십시오.

스마트 태그 인식자 만들기

기본 스마트 태그 인식 동작을 사용자 지정하려는 경우 사용자 고유의 스마트 태그 인식자를 만들 수 있습니다. 스마트 태그 인식자를 만드는 방법은 프로젝트의 대상이 .NET Framework 3.5인지 .NET Framework 4인지에 따라 다릅니다.

기본 텍스트 인식 동작

사용자가 문서 또는 통합 문서에 텍스트를 입력하면 Word 및 Excel에서 해당 텍스트로 토큰 목록을 만듭니다. 기본 스마트 태그 인식자는 이 토큰 목록과 사용자가 입력한 전체 텍스트를 받습니다. 기본 인식자는 다음과 같은 경우에 스마트 태그를 식별합니다.

  • Terms 속성의 문자열 중 하나가 문서 또는 통합 문서의 토큰 중 하나와 정확하게 일치하는 경우

  • Expressions 속성의 정규식 중 하나가 사용자가 입력한 전체 텍스트에 일치되는 경우

Word 및 Excel은 공백이 포함된 문자열이나, 사용자가 입력한 문자, 숫자 및 기호를 개별 토큰으로 결합하는 문자열을 구문 분석합니다. 예를 들어 사용자가 "sales report"를 입력할 경우 Word 및 Excel에서는 "sales" 토큰과 "report" 토큰을 만듭니다. 마찬가지로 "2005sales"를 입력할 경우 Word 및 Excel에서는 "2005" 토큰과 "sales" 토큰을 만듭니다.

스마트 태그에서 공백이 포함된 문자열이나 문자, 숫자 및 기호를 결합하는 문자열을 인식하도록 하려면 Terms 속성에 문자열을 추가하지 마십시오. 대신 문자열을 설명하는 정규식을 Expressions 속성에 추가하거나 문자열을 검색하는 사용자 인식자를 만듭니다.

.NET Framework 4를 대상으로 하는 프로젝트에서 스마트 태그 인식자 만들기

사용자 고유의 스마트 태그 인식자를 만들려면 Microsoft.Office.Tools.Word.ISmartTagExtension 또는 Microsoft.Office.Tools.Excel.ISmartTagExtension 인터페이스를 구현하는 클래스를 정의합니다. ISmartTagExtension.Recognize 메서드 구현에서는 텍스트에 스마트 태그 용어가 있는지 검색하고 스마트 태그 용어가 있으면 Word 또는 Excel에 이 스마트 태그를 등록합니다. 스마트 태그를 등록하려면 Recognize 메서드에서 context 매개 변수의 PersistTag 메서드를 호출합니다.

다음 코드 예제에서는 .NET Framework 4을 대상으로 하는 Word 프로젝트에서 사용자 지정 인식자가 있는 간단한 스마트 태그를 만드는 방법을 보여 줍니다.

Public Class SmartTagWithCustomRecognizer
    Implements Microsoft.Office.Tools.Word.ISmartTagExtension

    Private theSmartTag As Microsoft.Office.Tools.Word.SmartTag

    Public Sub New()
        theSmartTag = Globals.Factory.CreateSmartTag("www.microsoft.com/Demo#DemoSmartTag",
            "Test Smart Tag", Me)
        Dim simpleAction As Microsoft.Office.Tools.Word.Action = Globals.Factory.CreateAction("Test Action")
        theSmartTag.Actions = New Microsoft.Office.Tools.Word.Action() {simpleAction}
    End Sub

    Private Sub Recognize(ByVal text As String,
        ByVal site As Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite,
        ByVal tokenList As Microsoft.Office.Interop.SmartTag.ISmartTagTokenList,
        ByVal context As Microsoft.Office.Tools.Word.SmartTagRecognizeContext) _
        Implements Microsoft.Office.Tools.Word.ISmartTagExtension.Recognize

        Dim index As Integer = text.IndexOf("blue")
        If index >= 0 Then
            context.PersistTag(index, 4, Nothing)
        End If
    End Sub

    Public ReadOnly Property ExtensionBase() As Object _
        Implements Microsoft.Office.Tools.Word.ISmartTagExtension.ExtensionBase
        Get
            Return theSmartTag
        End Get
    End Property
End Class
public class SmartTagWithCustomRecognizer : Microsoft.Office.Tools.Word.ISmartTagExtension
{
    private Microsoft.Office.Tools.Word.SmartTag theSmartTag;

    public SmartTagWithCustomRecognizer()
    {
        theSmartTag = Globals.Factory.CreateSmartTag("www.microsoft.com/Demo#DemoSmartTag", 
            "Test Smart Tag", this);
        Microsoft.Office.Tools.Word.Action simpleAction = Globals.Factory.CreateAction("Test Action");
        theSmartTag.Actions = new Microsoft.Office.Tools.Word.Action[] { simpleAction };
    }

    public void Recognize(string text, Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite site, 
        Microsoft.Office.Interop.SmartTag.ISmartTagTokenList tokenList,
        Microsoft.Office.Tools.Word.SmartTagRecognizeContext context)
    {
        int index = text.IndexOf("blue");
        if (index >= 0)
        {
            context.PersistTag(index, 4, null);
        }
    }

    public object ExtensionBase
    {
        get { return theSmartTag; }
    }
}

보다 세부적인 지침과 사용자 지정 인식자가 있는 좀 더 복잡한 스마트 태그 클래스를 보여 주는 코드 예제는 방법: Word 및 .NET Framework 4에서 사용자 지정 인식기를 사용하여 스마트 태그 만들기방법: Excel 및 .NET Framework 4에서 사용자 지정 인식기를 사용하여 스마트 태그 만들기를 참조하십시오.

.NET Framework 3.5를 대상으로 하는 프로젝트에서 스마트 태그 인식자 만들기

사용자 고유의 스마트 태그 인식자를 만들려면 Microsoft.Office.Tools.Word.SmartTag 또는 Microsoft.Office.Tools.Excel.SmartTag에서 클래스를 파생시킨 다음 이 클래스의 SmartTag.Recognize 메서드를 재정의합니다. 이 메서드에서는 텍스트에 스마트 태그 용어가 있는지 검색하고 스마트 태그 용어가 있으면 Word 또는 Excel에 이 스마트 태그를 등록합니다. 스마트 태그를 등록하려면 Microsoft.Office.Tools.Word.SmartTag 또는 Microsoft.Office.Tools.Excel.SmartTag에서 파생된 클래스의 PersistTag 메서드를 호출합니다.

다음 코드 예제에서는 .NET Framework 3.5를 대상으로 하는 Word 프로젝트에서 사용자 지정 인식자가 있는 간단한 스마트 태그를 만드는 방법을 보여 줍니다.

Public Class SmartTagWithCustomRecognizer 
    Inherits Microsoft.Office.Tools.Word.SmartTag

    Public Sub New()
    MyBase.New("https://www.contoso.com/Demo#DemoSmartTag", _
        "Test Smart Tag")
        Dim simpleAction As Microsoft.Office.Tools.Word.Action = _
            New Microsoft.Office.Tools.Word.Action("TestAction")
        Me.Actions = new Microsoft.Office.Tools.Word.Action() { simpleAction }
    End Sub

    Protected Overrides Sub Recognize(ByVal text As String, _
        ByVal site As Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite, _
        ByVal tokenList As Microsoft.Office.Interop.SmartTag.ISmartTagTokenList)

        Dim index As Integer = text.IndexOf("blue")
        If index >= 0 Then
            Me.PersistTag(index, 4, Nothing)
        End If
    End Sub
End Class
public class SmartTagWithCustomRecognizer : Microsoft.Office.Tools.Word.SmartTag
{
    public SmartTagWithCustomRecognizer() : base(
        "https://www.contoso.com/Demo#DemoSmartTag", 
        "Test Smart Tag")
    {
        Microsoft.Office.Tools.Word.Action simpleAction = 
            new Microsoft.Office.Tools.Word.Action("TestAction");
        this.Actions = new Microsoft.Office.Tools.Word.Action[] { simpleAction };
    }

    protected override void Recognize(string text, 
        Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite site, 
        Microsoft.Office.Interop.SmartTag.ISmartTagTokenList tokenList)
    {
        int index = text.IndexOf("blue");
        if (index >= 0)
        {
            this.PersistTag(index, 4, null);
        }
    }
}

보다 세부적인 지침과 사용자 지정 인식자가 있는 좀 더 복잡한 스마트 태그 클래스를 보여 주는 코드 예제는 방법: Word 및 .NET Framework 3.5에서 사용자 지정 인식기를 사용하여 스마트 태그 만들기방법: Excel 및 .NET Framework 3.5에서 사용자 지정 인식기를 사용하여 스마트 태그 만들기를 참조하십시오.

속성 모음에서 데이터 저장 및 검색

스마트 태그는 속성 모음이라고 하는 키-값 쌍으로 이루어진 모음에 데이터를 저장할 수 있습니다. 속성 모음에 있는 각각의 값과 키는 문자열입니다.

다음과 같은 두 가지 방법으로 속성 모음에 액세스할 수 있습니다.

  • Microsoft.Office.Tools.Word.Action 또는 Microsoft.Office.Tools.Excel.Action 개체의 Click 또는 BeforeCaptionShow 이벤트를 처리하고, 이벤트 인수 매개 변수의 Properties 속성을 사용하여 스마트 태그의 속성 모음을 읽거나 쓸 수 있습니다. Properties 속성은 ISmartTagProperties 개체를 반환합니다. ISmartTagProperties 인터페이스는 Microsoft Smart Tags 2.0 Type Library에 대한 참조를 프로젝트에 추가할 때 사용할 수 있습니다.

  • 위의 지침에 따라 사용자 지정 스마트 태그 인식자를 만들 수 있습니다. Recognize 메서드의 구현 또는 재정의에서 site 매개 변수의 GetNewPropertyBag 메서드를 사용하여 스마트 태그의 속성 모음을 읽거나 쓰는 데 사용할 수 있는 ISmartTagProperties 개체를 가져옵니다.

속성 모음을 읽거나 쓰는 방법에 대한 예제를 보려면 다음 항목을 참조하십시오.

정규식 및 속성 모음

스마트 태그에 정규식을 할당하면 기본 인식자가 정규식에서 캡처된 각 그룹에 대한 키-값 쌍을 스마트 태그의 속성 모음에 추가합니다.

이 동작을 보여 주는 예제를 보려면 연습: 문서 수준 사용자 지정을 사용하여 스마트 태그 만들기를 참조하십시오. 정규식의 캡처된 그룹에 대한 자세한 내용은 그룹화 구문Regular Expression 개체 모델를 참조하십시오.

참고 항목

작업

방법: Word 및 Excel에서 스마트 태그 사용

방법: Word 문서에 스마트 태그 추가

방법: Excel 통합 문서에 스마트 태그 추가

방법: Word 및 .NET Framework 3.5에서 사용자 지정 인식기를 사용하여 스마트 태그 만들기

방법: Excel 및 .NET Framework 3.5에서 사용자 지정 인식기를 사용하여 스마트 태그 만들기

연습: 문서 수준 사용자 지정을 사용하여 스마트 태그 만들기

연습: 응용 프로그램 수준 추가 기능을 사용하여 스마트 태그 만들기

기타 리소스

스마트 태그 개요