存档在 ‘VSTO开发’ 分类中.
当使用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。
使用VBA创建Office定制与使用VSTO创建Office解决方案有一些类似,但有许多的不同。
使用VBA创建Office解决方案
当创建VBA解决方案时,在Office应用程序中开始。在Word和Excel中,可以按Alt+F11打开VBE编辑器。使用VBE,可以访问当前打开的任何文档项目,基于该文档的模板,以及任何全局可访问的模板,或者附属的或全局的可用模板,例如Normal.dot。
当添加代码到ThisDocument或ThisWorkbook中,或者添加代码到该文档项目中的新模块中,该代码将仅对已添加该代码的文档或工作簿中可用。如果添加该代码到一个模板中,那么代码将对使用该应用程序打开的任何基于该模板的文档或者全局模板都是可用的。
可以从Outlook中访问VBE,但是Outlook每次仅支持一个VBA项目。特别地,开发者使用IDTExtensibility2接口为Outlook创建组件对象模型(COM)加载项。
使用VSTO创建Office解决方案
当创建一个VSTO解决方案时,将在Visual Studio IDE中开始。这里,可以选择为Word或Excel来创建文档或模板解决方案,或者为Outlook的加载项解决方案。如果创建Outlook加载项,那么将对整个Outlook应用程序都可用。如果选择Word或Excel文档,则该代码仅对那个文档有用。如果选择Word或Excel模板,则代码对任何从该模板中创建的文档都是可用的。
当使用VSTO来创建Word或Excel定制时,可以从Visual Studio里完全访问Word或Excel应用程序和对象模型。当创建加载项时,可以通过Application对象访问应用程序中的所有对象,但是没有从Visual Studio里直接访问该应用程序。
为VSTO文档级的解决方案编写的代码被存储在与该文档相联系的文件中,这经常被称作为“代码后面的”文件,因为代码在后台以集的形式支持该文档功能,而不是像VBA代码一样内嵌于文档。当代码文件被编译成集(DLL)时,接着与该文档相联系。所编译的代码可以仅在文档级被访问(而不是应用程序级)。
也可以基于Excel模板或Word模板创建VSTO解决方案。在此情形下,无论何时基于该模板打开一个文档,VSTO定制代码都将运行。不能够使用VSTO为Word 2003和Excel 2003创建应用程序级的定制,然而可以使用VSTO 2005 SE为几个Office应用程序(包括号Word 2003和Excel 2003)创建应用程序级的加载项。
以加载项的形式创建VSTO和VSTO 2005 SE的应用程序级的解决方案,无论何时开启应用程序时都将装载该加载项,而在关闭该应用程序时则会卸载该加载项。可以创建加载项来定制应用程序的用户界面,例如在Excel 2003中添加新的菜单或菜单项,在Word 2007中添加按钮到功能区,或者当一个应用程序事件发生时执行特定的操作。
使用VBA,在Word中通过添加代码到全局模板中创建应用程序级的定制,可能是Normal.dot模板或通过存储模板在Startup目录中使自定义模板成为全局模板。这种方案在VSTO中不被支持,因为VSTO创建定制仅特定于单个的文档,而不是在Word中打开的每个文档。如果使用Word模板创建VSTO定制,然后将其存储在Startup目录中,与该模板相关的定制的代码对所有打开的文档都不可用,它仅在基于该模板的文档被打开时运行。如果想为Word创建应用程序级的定制,应该使用VSTO 2005 SE创建加载项。
当使用VBA定制Excel时,可以使用Excel加载项文件(.xla文件)创建应用程序级加载项类型。然而,不能使用一个已存在的.xla文件创建VSTO解决方案,因为在项目创建中不支持该文件类型。虽然可以创建一个Excel VSTO解决方案,然后保存该文件为.xla文件运行定制代码,但这种方案不被Microsoft所支持。
项目类型
当打开Visual Studio 2005并创建一个新项目时,将发现很多与Office相关的模板可用。这些项目出现在新建项目对话框中,并取决于安装Visual Studio时所选择的环境设置。
使用VSTO的默认安装,可以创建Word文档、Word模板、Excel工作簿、Excel模板或Outlook加载项项目。可以选择地安装InfoPath工具集,使得InfoPath模板可用,如下图所示。要查看这些项目模板,在菜单“文件”中,单击“新建项目”。可以扩展Visual Basic节点来展示项目模板类别。要在新建项目对话框的模板窗格中显示VSTO项目模板,单击Office节点。

图1:新建项目对话框中的VSTO模板
如果在VSTO之上已安装了VSTO 2005 SE,在新建项目对话框中有一些其它模板可用,如图2所示。

图2:在新建项目对话框中的VSTO 2005 SE模板
注意,在2007外接程序节点中有一些为Office 2007的加载项模板,同样,在2003外接程序节点中有一些为Office 2003的项目模板。
Excel工作簿
Excel工作簿项目模板能够使您为Excel工作簿(.xls文件)创建VSTO定制。当在新建项目对话框中选择Excel工作簿并单击确定后,Visual Studio 2005呈现VSTO项目向导。使用该向导,可以选择自定义新工作簿、或者可以选择已存在的工作簿,如图3所示。

图3:VSTO项目向导
要选择一个已存在的文档,单击“浏览”并导航到想要创建的工作簿。不会使用所选择的工作簿,VSTO产生一个副本,并将其保存在存储VSTO解决方案的同一文件夹中。
Excel模板
Excel模板项目能使您为Excel模板(.xlt文件)创建VSTO定制。当选择Excel模板时,可以创建一个新模板或者选择现有的模板。要选择现有的模板,必须选择一个.xlt扩展名的文件。如果想要创建一个基于现有工作簿的模板,在向导里选择该工作簿之前,在Visual Studio外将该工作簿保存为模板。VSTO将复制该模板到保存VSTO解决方案的相同目录中。
Word文档
Word文档项目模板使得可以为Word文档(.doc文件)创建一个VSTO定制。当在新建项目对话框中选择Word文档并单击确定时,Visual Studio显示VSTO项目向导。在该向导中,创建一个新文档或者选择现有的。VSTO产生所选文档的副本,将在存储VSTO解决方案的同一目录中保存该文档副本。
Word模板
Word模板项目能够使您为Word模板(.dot文件)创建一个VSTO定制。当选择Word模板时,可以创建一个新模板或选择现有的。要选择现有的模板,应选择扩展名为.dot的文件。在基于现有文档创建模板,必须在向导中选择该文档之前首先在Visual Studio之外将该文档保存为一个模板。VSTO将复制该模板到存储VSTO解决方案的同一目录中。
Outlook加载项
在Outlook加载项模板中,可以使用VSTO为Outlook创建加载项。当选择Outlook加载项时,Visual Studio在代码视图中打开该加载项项目,显示ThisApplication_Startup和ThisApplication_Shutdown事件句柄。VSTO也为Outlook解决方案创建一个安装项。该安装项被使用来注册和发布Outlook加载项。
VSTO 2005 SE加载项
如果已经安装了VSTO 2005 SE,您将发现创建几种Office 2003和Office 2007应用程序的额外的项目模板,包括Word、Excel、Outlook、PowerPoint、Visio和InfoPath(仅2003)。这些加载项的架构与VSTO Outlook加载项稍有不同。当创建VSTO 2005 SE加载项时,Visual Studio在代码视图中打开该加载项,显示ThisAddin_Startup和ThisAddin_Shutdown事件句柄。
注:本文整理自《VSTO for Mere Mortals》─—A VBA Developer’s Guide to Microsoft Office Development Using Visual Studio 2005 Tools for Office,有删节。
VSTO为想要创建Office应用程序的开发者提供了一个专业的开发环境。有许多理由使得您可能想使用VSTO来创建解决方案,也有一些理由使得使用VBA创建解决方案可能会更好。
如果想要进行下列操作,可能会选择VBA创建Office解决方案。
- 为Office 2003专业版之前的版本创建应用程序级的定制。
- 为在VSTO或VSTO 2005 SE中不支持的Office应用程序创建应用程序级的定制,例如Microsoft Access。
- 为Office 2003(标准版)创建文档级的定制。
- 通过使用全局模板为Word和Excel创建应用程序级的定制。
- 通过创建与想要重载的命令有相同名称的宏,重载Word、Excel和Outlook中的原始命令。
- 对终端计算机粘附禁止配置.NET框架的有组织的需求。
如果想要进行下列操作,可能会选择使用VSTO或VSTO 2005 SE来创建Office解决方案。
- 容易添加智能标记到解决方案中。
- 提供仅对特定文档可用的智能标记。
- 在文档和任务窗格中使用更丰富的控件。
- 在离线的文档里存储数据,并在下次文档在线时容易更新。
- 创建有一个稳定装载和卸载机制的加载项。
- 仅使用几行代码定制任务窗格。
- 容易定制Office 2007中的功能区。
- 定制Outlook 2007窗体区域。
- 访问.NET框架类库。
- 使用更健壮的调试工具。
- 获取对Visual Studio的整合开发环境(IDE)里的一些工具的访问,例如数据源窗口和富智能感应功能。
- 使用专业的开发语言,例如Visual Basic 2005或Visual C#,编写可管理代码的解决方案。
- 使用更容易的方法来维护代码和更新配置解决方案,使得代码修改在一个位置(在单个的集里面)而不是在文档的多个副本里或在全局模板中。
- 减少宏病毒的可能,避免最终用户决定是否代码是安全的。
- 在Office解决方案里的文档中,获取对象的数据绑定功能。
- 获取对VSTO提供的扩展Office对象公开的事件的访问。
注:本文整理自《VSTO for Mere Mortals》─—A VBA Developer’s Guide to Microsoft Office Development Using Visual Studio 2005 Tools for Office,有删节。
Visual Studio 2005 Tools for Office(VSTO)能够让您使用Visual Basic 2005或Visual C#来扩展Office 2003应用程序,例如Word、Excel、InfoPath和Outlook。代替使用Visual Basic for Application(VBA)和Office里的Visual Basic Editor(VBE),您可以使用健壮的Visual Studio开发环境来创建定制。无论您正创建简单的数据输入应用程序还是复杂的企业解决方案,VSTO都能容易地完成这些工作。
顾名思义,VSTO是Visual Studio里创建自定义Office应用程序的工具集。要在Visual Studio中获取VSTO功能,必须安装单机版Visual Studio 2005 Tools for the Microsoft Office System或者Visual Studio Team System。
要使用VSTO定制Office,则需通过在Visual Studio中创建一个新的Office项目开始。在缺省的VSTO安装中,包括五种与Office相联系的Visual Studio项目模板类型:四种项目模板为Word和Excel创建文档级的应用程序,一种项目模板以Outlook加载项的形式创建应用程序级的定制。VSTO也为InfoPath扩展包括了一种可选的模板。
一个文档级的定制意味着代码与特定的文档相联系,而不是整个应用程序。记住代码不会驻留在文档或模板中,与VBA定制不同,代码留在与该文档相联系的称作集的代码库中。在创建一个新的VSTO项目之后,可以通过主互操作程序集(PIA)来访问Office对象模型中的对象。Office PIAs允许VSTO定制与Office对象模型相交互。
VSTO也提供了可供编程的增强的Office对象。例如,可以找到Excel工作簿、工作表和单元格区域的VSTO版本,它们已扩展了在原始Excel对象模型里找不到的功能。例如,可以直接添加称作Windows Forms控件的.NET控件到Excel电子表格或Word文档中,然后直接将数据绑定到这些控件。
一个应用程序级的定制可用于整个应用程序。VSTO为Outlook 2003提供了一个加载项模板。使用Visual Studio 2005 Tools for the 2007 Microsoft Office System(VSTO 2005 SE),可以为Office 2007中的6个应用程序和Office 2003中的5个应用程序创建加载项。
注:本文整理自《VSTO for Mere Mortals》─—A VBA Developer’s Guide to Microsoft Office Development Using Visual Studio 2005 Tools for Office,有删节。
参考站点:
VSTO团队博客:http://blogs.msdn.com/vsto2/
作者的博客:http://blogs.msdn.com/kathleen/
http://blogs.msdn.com/pstubbs/
标签: 没有标签