|
楼主 |
发表于 2010-5-24 21:26
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
六、编程步骤
【开发环境】
开发环境:Visual Studio 2010
应用环境:Microsoft Office 2007
1、创建新的 Excel 项目。
文件-->新建-->项目-->选择项目类型
Excel 2007 Add-in
项目名称设为:MYE_VSTO_EXCEL_SmartTag_2007
图一:创建项目
2、通过“添加引用”对话框的“COM”选项卡添加对“Microsoft Smart Tags 2.0 类型库”的引用。
项目-->添加引用-->选择.net项-->选择引用
引用名称:Microsoft.Office.Interop.SmartTag(Version:12.0.0.0)
注:如果是针对2010的项目,改选为(Version:14.0.0.0),对应Office 2010
图二:创建项目
3、向项目中添加类文件,并创建一个从 Microsoft.Office.Tools.Excel.SmartTag 继承的类。
项目-->添加“类”
类名:CustomSmartTag.cs
图三:添加类
代码一:CustomSmartTag.cs
using System;
using System.Windows.Forms;
using Microsoft.Office.Tools.Excel;
using Microsoft.Office.Interop.SmartTag;
namespace Trin_ExcelDerivedSmartTags
{
public class CustomSmartTag : SmartTag
{
//TO DO
}
}
4、在新建的类中,创建智能标记的操作。操作是指显示在智能标记菜单中的项。
在启动事件中,添加代码。
代码二:ThisAddIn.cs
// Declare Actions for this SmartTag
Action Action1 = new Action("Display property value");
Action Action2 = new Action("Display smart tag details");
public CustomSmartTag() : base("http://vsto.5d6d.com/#DemoSmartTag", "我的智能标签")
{
this.Terms.AddRange(new string[] { "潘淳", "陈国良","mye.cn" });
Actions = new Action[] { Action1, Action2 };
Action1.Click += new ActionClickEventHandler(Action1_Click);
Action2.Click += new ActionClickEventHandler(Action2_Click);
}
5、重写 Recognize 方法以实现自己的自定义识别行为。您的 Recognize 实现必须调用 PersistTag 方法以使 Excel 能够识别该智能标记。
代码三:CustomSmartTag .cs
protected override void Recognize(string text, ISmartTagRecognizerSite site, ISmartTagTokenList tokenList)
{
// Determine whether each smart tag term exists in
// the document text.
foreach (string term in this.Terms)
{
// Search the cell text for the first instance of
// the current smart tag term.
int index = this.CellText.IndexOf(term, 0);
if (index >= 0)
{
// Create a smart tag token and a property bag for the
// recognized term.
ISmartTagProperties propertyBag = site.GetNewPropertyBag();
// Write a new property value.
string key = "Key1";
propertyBag.Write(key, DateTime.Now.ToString());
// Attach the smart tag to the term in the document
this.PersistTag(propertyBag);
// This implementation only finds the first instance
// of a smart tag term in the cell.
break;
}
}
6、创建事件处理程序以响应所创建操作的 Click 事件。
代码四:CustomSmartTag .cs
// This action displays the property value for the term.
private void Action1_Click(object sender, ActionEventArgs e)
{
ISmartTagProperties propertyBag = e.Properties;
string key = "Key1";
MessageBox.Show("The corresponding value of " + key + " is: " + propertyBag.get_Read(key));
}
// This action displays smart tag details.
private void Action2_Click(object sender, ActionEventArgs e)
{
MessageBox.Show("The current smart tag caption is '" + this.Caption + "'. The current smart tag type is '" + this.SmartTagType + "'.");
}
7、在项目工作簿的代码文件中,向工作簿中的 VstoSmartTags 添加智能标记实例。
代码五:CustomSmartTag .cs
{
//启动“智能标签/动作”
Application.SmartTagRecognizers.Recognize = true;
//与项目挂钩
this.VstoSmartTags.Add(new CustomSmartTag().Base);
}
顺例说一下,Smart Tag 是一个被忽视的重大功能,想像空间近乎无穷...
[ 本帖最后由 儒道佛 于 2010-5-25 12:45 编辑 ] |
评分
-
1
查看全部评分
-
|