更新:2007 年 11 月
适用对象 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
使用文档级自定义项扩展 Microsoft Office Word 或 Microsoft Office Excel 时,可以执行以下任务:
通过使用 Microsoft Office 应用程序的对象模型实现该应用程序的自动化。
向文档图面添加控件。
从自定义项程序集中调用文档中的 Visual Basic for Applications (VBA) 代码。
从 VBA 中调用自定义项程序集内的代码。
当文档位于未安装 Microsoft Office 的服务器上时,管理该文档的某些方面。
自定义应用程序的用户界面 (UI)。
有关文档级自定义项和可使用 Visual Studio Tools for Office 创建的其他类型的解决方案的常规信息,请参见 Office 解决方案开发概述。
在文档级项目中编写代码
创建文档级项目时,Visual Studio Tools for Office 将在该项目中自动生成一个可用来开始编写代码的类。Visual Studio Tools for Office 将为 Word 和 Excel 生成不同的类:
在 Word 的文档级项目中,默认情况下此类被称为 ThisDocument。
Excel 的文档级项目具有多个生成的类:工作簿自身具有一个类,每个工作表具有一个类。默认情况下,这些类具有以下名称:
ThisWorkbook
Sheet1
Sheet2
Sheet3
生成的类包括打开或关闭文档时调用的事件处理程序。若要在打开文档时运行代码,请将代码添加到 Startup 事件处理程序中。若要在即将关闭文档时运行代码,请将代码添加到 Shutdown 事件处理程序中。有关更多信息,请参见 Visual Studio Tools for Office 项目事件。
文档级项目中每个自动生成的类均派生自一个称为“宿主项”的 Visual Studio Tools for Office 类。例如,Word 项目中的 ThisDocument 类派生自 Microsoft.Office.Tools.Word.Document 宿主项。有关更多信息,请参见宿主项和宿主控件概述。
访问宿主应用程序的对象模型
若要访问宿主应用程序的对象模型,请在项目中使用生成的类的成员。这些类中的每个类均对应于 Excel 或 Word 对象模型中的一个类,并且,它们包含的属性、方法和事件大部分相同。例如,Word 文档级项目中的 ThisDocument 类提供的成员与 Word 对象模型中的 Microsoft.Office.Interop.Word.Document 类提供的成员大部分相同。
下面的代码示例演示如何使用 Word 对象模型保存作为 Word 文档级自定义项的一部分的文档。将从 ThisDocument 类中运行此示例。
Me.Save()
this.Save();
若要从 ThisDocument 类以外执行相同的操作,请使用 Globals 对象访问 ThisDocument 类。有关 Globals 对象的更多信息,请参见对 Visual Studio Tools for Office 项目中的对象的全局访问。
例如,如果要在操作窗格 UI 中包含一个“保存”按钮,则可以将此代码添加到操作窗格代码文件中。
Globals.ThisDocument.Save()
Globals.ThisDocument.Save();
由于 ThisDocument 类派生自 Microsoft.Office.Tools.Word.Document 宿主项,因此在此代码中调用的 Save 方法实际上是 Microsoft.Office.Tools.Word.Document 宿主项的 Save 方法。此方法与 Word 对象模型中的 Microsoft.Office.Interop.Word.Document 类的 Save 方法相对应。
有关使用 Word 和 Excel 的对象模型的更多信息,请参见 Word 对象模型概述和 Excel 对象模型概述。
向文档添加控件
若要自定义文档的 UI,可以向文档图面添加 Windows 窗体控件或“宿主控件”。通过组合不同的控件集并编写代码,可将控件绑定到数据,从用户那里收集信息并对用户操作做出响应。
宿主控件是扩展 Word 和 Excel 对象模型中的某些对象的类。例如,Microsoft.Office.Tools.Excel.ListObject 宿主控件提供 Excel 中 Microsoft.Office.Interop.Excel.ListObject 的所有功能。但是,Microsoft.Office.Tools.Excel.ListObject 宿主控件还具有附加的事件和数据绑定功能。
有关更多信息,请参见宿主项和宿主控件概述和 Office 文档上的 Windows 窗体控件概述。
结合 VBA 和文档级自定义项
可以使用作为 Visual Studio Tools for Office 文档级自定义项一部分的文档中的 VBA 代码。在所有文档级项目中,可以从自定义项程序集中调用文档中的 VBA 代码。在 2007 Microsoft Office system 的文档级项目中,您还可以配置项目以使文档中的 VBA 代码能够调用自定义项程序集中的代码。
有关更多信息,请参见结合 VBA 和文档级自定义项。
在服务器上管理文档
您可以在未安装 Microsoft Office Word 或 Microsoft Office Excel 的服务器上管理文档级自定义项的多个不同方面。例如,可以访问并修改文档数据缓存中的数据。还可以管理与文档相关联的 Visual Studio Tools for Office 自定义项程序集。例如,可以用编程方式移除文档中的程序集,以使文档不再运行代码,或者可以用编程方式将程序集附加到文档。
有关更多信息,请参见使用 ServerDocument 类管理服务器上的文档。
自定义 Microsoft Office 应用程序的用户界面
可以使用文档级自定义项自定义 Word 和 Excel 的 UI。
Microsoft Office 的 2007 和 2003 版本
对于 Microsoft Office 2003 和 2007 Microsoft Office system,可以通过以下方式自定义 UI:
向文档图面添加宿主控件或 Windows 窗体控件。
有关更多信息,请参见 Word 宿主控件、Excel 宿主控件和 Office 文档上的 Windows 窗体控件概述。
向文档添加操作窗格。
有关更多信息,请参见操作窗格概述。
向文档添加智能标记。
有关更多信息,请参见智能标记概述。
2007 版本
对于 Word 2007 和 Excel 2007,也可以通过以下方式自定义 UI:
向功能区中添加自定义选项卡。
有关更多信息,请参见功能区概述。
将自定义组添加到功能区上的内置选项卡。
有关更多信息,请参见如何:自定义内置选项卡。
2003 版本
对于 Word 2003 和 Excel 2003,也可以通过以下方式自定义 UI:
添加自定义工具栏和工具栏项。
有关更多信息,请参见如何:以编程方式创建 Office 工具栏。
添加菜单和菜单项。
有关更多信息,请参见如何:以编程方式创建 Office 菜单。
有关自定义 Microsoft Office 应用程序的 UI 的更多信息,请参见 Office UI 自定义。