存档在 ‘VSTO开发’ 分类中.
步骤1:打开Visual Studio 2005,单击菜单“文件”─—“新建项目”。
步骤2:在“新建项目”对话框中,选择“Windows”节点中的“类库”,并输入名称,如下图。单击“确定”,创建一个类库项目。

步骤3:在Class1.vb代码窗口中,输入下面的代码:
Imports System
Imports System.Runtime.InteropServices
Imports Microsoft.Win32
<ClassInterface(ClassInterfaceType.AutoDual), ComVisible(True)> _
Public Class TestFunction
Public Function fff() As Long
Dim result As Long
result = 12345
Return result
End Function
<ComRegisterFunctionAttribute()> _
Public Shared Sub RegisterFunction(ByVal type As Type)
Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type))
End Sub
<ComUnregisterFunctionAttribute()> _
Public Shared Sub UnregisterFunction(ByVal type As Type)
Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type), False)
End Sub
Private Shared Function GetSubKeyName(ByVal type As Type) As String
Dim s As String = “CLSID\{” + type.GUID.ToString().ToUpper() + “}\Programmable”
Return s
End Function
End Class
步骤4:单击菜单“项目”─—“TestMyFunctions属性”。
步骤5:选择“编译”选项卡,选中“为COM Interop注册”前的复选框,如下图。

步骤6:单击菜单“生成”─—“生成TestMyFunctions”。
步骤7:保存该项目,然后退出Visual Studio 2005。
步骤8:启动Excel 2003。
步骤9:单击菜单“工具”─—“加载宏”。
步骤10:在“加载宏”对话框中,单击其右侧的“自动化”按钮。
步骤11:在“自动化服务器”对话框的列表中,找到“TestMyFunctions.TestMyFunction”并选中,然后单击“确定”,如下图。

步骤12:此时,在“加载宏”对话框中,添加了“TestMyFunctions.TestMyFunction”项,如下图,单击“确定”。

步骤13:在Excel工作表单元格中,按普通的公式方输入“=fff()”,按回车后得到结果“12345”。
此时,在Excel的“插入函数”对话框中,添加了一个新类别“TestMyFunctions.TestMyFunction”,其中包括自定义的函数fff,如下图。

技术正在飞速发展,还记得似乎Microsoft才推出Visual Studio 2005不久,而今又推出了Visual Studio 2008,更新得如此之快,让人真的是有点不知所措。
下面是最新一期《MSDN Magazine》——Launch 2008上一篇关于VSTO 3.0的文章。在这里,只给出了文章的链接和主要介绍,以及我感兴趣的内容。
文章链接:http://msdn.microsoft.com/msdnmag/issues/08/LA/ExtendingOutlookWithVS08/default.aspx?loc=zh
主要内容:
- Visual Studio 2008 新增功能
- 为 Outlook 创建自定义窗体区域
- 连接数据源
- 添加搜索功能
一些内容:
- 到目前为止,我敢确定您已经听说了一些有关 Visual Studio® 2008 的趣闻,它具有一些强大的功能,如支持 LINQ、改进了 Web 开发以及与 Windows Vista® 和 SharePoint® 紧密集成等等。不过 Visual Studio 2008 真正突出的一个特点是支持 Microsoft® Office 解决方案开发。
您也可下载 VSTO Second Edition 开发 Office 2003 应用程序和 2007 Microsoft Office 系统的解决方案。但是,在 Visual Studio 2008 中包含了所有的 VSTO 项目模板。
标签: 没有标签
近期,电子工业出版社出版了一本关于使用.NET(VSTO)开发Office的图书,这可能是国内第一本引进的关于这方面的图书,值得关注。

- 本书是微软公司VSTO开发小组的两位设计人员编写的一部关于Microsoft Office程序开发的专著,介绍了在Visual Studio .NET 2005开发环境中使用Visual Basic.NET开发Office程序的技术方法。主要内容包括VSTO 2005中的Office主互调程序集,Word、Excel、Outlook和InfoPath的对象模型、事件和方法,以及在VSTO中应用这些对象模型、事件和方法创建Word、Excel、Outlook等Office自动化程序、加载项及文档代码的方法。本书还具体介绍了VSTO 2005为Office开发所提供的各种功能。
本书示范程序精炼、典型、实用,分析了VSTO Office程序设计的技术、方法与原理,帮助读者学习和掌握VSTO Office程序设计。本书可作为有一定经验的Office用户学习Microsoft Office程序开发的首选书,更是中高级Office开发人员深入学习Office编程不可多得的技术指南。
目录
第I部分 VSTO简介 1
第1章 Office编程简介 3
1.1 为什么要进行Office编程 3
1.2 Office对象模型 5
1.3 属性、方法和事件 9
1.4 Office主互调程序集(PIA) 22
1.5 本章小结 28
第2章 Office解决方案介绍 29
2.1 Office解决方案的三种基本模式 29
2.2 Office自动化程序 31
2.3 Office加载项 39
2.4 文档代码 42
2.5 本章小结 47
第II部分 .NET环境下的Office编程 49
第3章 Excel编程 51
3.1 自定义Excel的方法 51
3.2 编写用户自定义函数 57
3.3 Excel对象模型介绍 64
3.4 本章小结 67
第4章 Excel事件处理 69
4.1 Excel对象模型中的事件 69
4.2 VSTO中的事件 95
4.3 本章小结 98
第5章 Excel对象处理 99
5.1 使用Application对象 99
5.2 使用Workbooks集合 109
5.3 使用Workbook对象 112
5.4 使用Worksheets、Charts和Sheets集合 117
5.5 使用文档属性 119
5.6 使用窗口集合 121
5.7 使用窗口对象 124
5.8 使用Names集合与Name对象 126
5.9 使用Worksheet对象 127
5.10 使用Range对象 137
5.11 Excel中的特殊问题 148
5.12 本章小结 152
第6章 Word编程 155
6.1 自定义Word的方法 155
6.2 信息检索服务编程 159
6.3 Word对象模型简介 166
6.4 本章小结 166
第7章 Word事件处理 171
7.1 Word对象模型中的事件 171
7.2 VSTO中的Office事件 191
7.3 本章小结 192
第8章 Word对象处理 193
8.1 使用Application对象 193
8.2 使用Dialog对象 208
8.3 使用窗口 211
8.4 使用模板 214
8.5 使用文档 215
8.6 使用单个的文档 219
8.7 使用Range对象 233
8.8 使用书签 248
8.9 使用表格 249
8.10 本章小结 251
第9章 Outlook编程 253
9.1 自定义Outlook的方法 253
9.2 自定义属性页 258
9.3 Outlook对象模型的介绍 264
9.4 Collaboration Data Objects介绍 267
9.5 本章小结 270
第10章 Outlook事件处理 271
10.1 Outlook对象模型中的事件 271
10.2 应用程序级的事件 275
10.3 Outlook项的事件 283
10.4 其他事件 293
10.5 本章小结 295
第11章 Outlook对象处理 297
11.1 使用Application对象 297
11.2 使用Explorers和Inspectors集合 303
11.3 使用Explorer对象 304
11.4 使用Inspector对象 309
11.5 使用NameSpace对象 312
11.6 使用MAPIFolder对象 316
11.7 使用Items集合 323
11.8 Outlook项共有的属性和方法 327
11.9 Outlook的问题 341
11.10 本章小结 345
第12章 InfoPath介绍 347
12.1 何为InfoPath 347
12.2 让我们开始吧 348
12.3 窗体安全性 351
12.4 InfoPath编程 355
12.5 数据源事件 357
12.6 窗体事件、属性和方法 364
12.7 本章小结 371
第III部分 VSTO中的Office程序设计 373
第13章 VSTO编程模型 375
13.1 VSTO编程模型 375
13.2 VSTO对Word和Excel对象的扩展 377
13.3 动态控件 381
13.4 VSTO对Word和Excel对象模型的扩展 389
13.5 本章小结 398
第14章 在VSTO中使用Windows窗体 399
14.1 简介 399
14.2 向文档中添加Windows Forms控件 403
14.3 编写控件中的代码 408
14.4 Windows Forms控件寄宿结构 408
14.5 合并自OLEObject或OLEControl的属性 414
14.6 在运行过程中添加控件 416
14.7 本章小结 421
第15章 使用操作窗格 423
15.1 操作窗格简介 423
15.2 使用ActionsPane控件 427
15.3 本章小结 438
第16章 在VSTO中使用智能标记 439
16.1 智能标记简介 439
16.2 使用VSTO创建文档级的智能标记 442
16.3 创建应用程序级的智能标记 452
16.4 本章小结 469
第17章 VSTO数据编程 471
17.1 使用VSTO创建具有数据绑定功能的自定义电子表格 471
17.2 用VSTO创建具有数据绑定功能的自定义Word文档 478
17.3 数据集、适配器和数据源 479
17.4 另一种创建数据绑定电子表格的技术 485
17.5 在数据岛中缓存数据 491
17.6 高级ADO.NET数据绑定:透过表象看本质 494
17.7 对宿主项和宿主控件绑定相关的扩展 495
17.8 本章小结 499
第18章 服务器数据方案 501
18.1 在服务器上嵌入带有数据的文档 501
18.2 使用ServerDocument和ASP.NET 503
18.3 一个简单的客户端ServerDocument工具 509
18.4 ServerDocument对象模型 510
18.5 本章小结 517
第19章 .NET代码的安全性 519
19.1 代码访问安全与基于角色的安全 519
19.2 .NET中的代码访问安全 520
19.3 位置,位置,位置 525
19.4 强名称 529
19.5 发布者证书 534
19.6 信任文档 536
19.7 把策略配置到用户计算机中 539
19.8 本章小结 542
第20章 配置 543
20.1 VSTO预备条件 544
20.2 配置内部网络的共享目录或Web站点 544
20.3 没有配置清单的本地机器配置 550
20.4 编辑清单 550
20.5 创建安装包 555
20.6 本章小结 563
第IV部分 高级Office编程 565
第21章 在Excel中使用XML 567
21.1 Excel的XML功能介绍 567
21.2 在Visual Studio中创建XML架构简介 569
21.3 端到端的方案 572
21.4 Excel中的高级XML特性 579
21.5 便于Excel使用的XML架构 582
21.6 VSTO支持Excel架构映射 584
21.7 本章小结 596
第22章 在Word中使用XML 597
22.1 Word的 XML特性介绍 597
22.2 一种端对端的方案:创造架构并把它映射到Word文档中 600
22.3 将文档中映射的XML导出到XML数据文件中 610
22.4 将XML数据文件输入到映射的文档中 612
22.5 XML选项对话框 616
22.6 VSTO对WORD架构映射的支持 617
22.7 VSTO对WordML文件格式的支持 623
22.8 本章小结 624
第23章 为Word和Excel开发COM加载项 625
23.1 加载宏简介 625
23.2 需要使用加载宏的典型情况 625
23.3 如何注册COM加载项 626
23.4 实现IDTExtensibility2接口 629
23.5 使用Visual Studio编写COM加载项 634
23.6 mscoree.dll的陷阱 641
23.7 COM互调集和regasm.exe 642
23.8 Shimming:mscoree.dll相关问题的解决方案 645
23.9 本章小结 646
第24章 使用VSTO创建Outlook加载项 647
24.1 避免使用COM加载项 647
24.2 在VSTO中创建Outlook加载项 655
24.3 本章小结 660
参考文献 661
索引 663
当使用VSTO创建Word或Excel解决方案时,可以直接从Visual Studio里与Word或Excel应用程序相交互。这是因为VSTO与Visual Studio已整合在一起。
Word和Excel作为设计器
在已经创建新的Excel或Word文档或模板项目后,该文档在Visual Studio环境里作为设计器是可用的。事实上,整个应用程序在Visual Studio里是可用的。
设计器是正创建的应用程序的用户接口的容器。例如,如果在Word VBA解决方案里创建用户窗体,VBE为应用程序显示该用户窗体作为设计器。然后,可以添加控件到用户窗体。当使用VSTO创建解决方案时,同样的经历现在可用于Word和Excel解决方案中。该文档是一个设计器,可以从工具箱中拖动控件在其中。
能够在设计器中添加两种类型的控件:Windows Forms控件和宿主控件。
设计器是该应用程序的可见的表现,每个设计器与代码文件相关联(正如先前提到的,该代码有时被称为代码后台的文件)。可以使用一些方法从设计器视图切换到代码视图。一种方式是在文档中单击右键,然后在快捷菜单中单击查看代码。
当在代码视图中时,可以右键单击代码编辑器,并从快捷菜单中选择查看设计器,在Visual Studio里打开该设计器。也可以在解决方案管理器中右击代码文件,打开快捷菜单,会提供相看代码和相看设计器选项。

图:从代码编辑器切换到设计器
在VSTO里的代码文件
当创建新的VSTO解决方案时,Visual Studio创建许多文件。例如,如果在Visual Studio里

图:当选择显示所有文件时在解决方案管理器中显示的文件
在ThisDocument.vb源文件中编写代码。该文件包含ThisDocument类,有两个事件句柄(ThisDocument_Startup和ThisDocument_Shutdown)。可以在写字板里打开这个文件查看其内容。当然,不能使用写字板添加代码到文件中。ThisDocument.vb文件对Visual Studio里的文件有用。可以在解决方案管理器中右击该文件,选择查看代码。
这里,可以使用Visual Studio IDE的所有丰富的功能,包括IntelliSense和调试工具来使用代码任务更容易。在ThisDocument.vb后面有一些额外的文件,包含VSTO自动产生的代码。这些文件是ThisDocument.Designer.xml和ThisDocument.Designer.vb。