对文档级自定义项进行编程

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

Microsoft Office 版本

  • 2007 Microsoft Office system

  • Microsoft Office 2003

有关更多信息,请参见按应用程序和项目类型提供的功能

使用文档级自定义项扩展 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:

2007 版本

对于 Word 2007 和 Excel 2007,也可以通过以下方式自定义 UI:

2003 版本

对于 Word 2003 和 Excel 2003,也可以通过以下方式自定义 UI:

有关自定义 Microsoft Office 应用程序的 UI 的更多信息,请参见 Office UI 自定义

请参见

任务

如何:创建和修改自定义文档属性

如何:从文档属性中读取或向文档属性写入

概念

结合 VBA 和文档级自定义项

使用 ServerDocument 类管理服务器上的文档

从文档级自定义项中的本机 Office 对象获取扩展对象

其他资源

Office 文档上的控件