65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 .NET 创建 Office 2000 解决方案

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.88/5 (17投票s)

2004 年 11 月 3 日

3分钟阅读

viewsIcon

149738

downloadIcon

1375

本文介绍如何使用 Visual Studio .NET 2003 创建 Office 2000 解决方案。

引言

传统上,开发人员使用 VBA 创建基于 Office 的应用程序。当 .NET 带着它所有的好处出现时,他们感到需要使用 .NET 创建以文档为中心的解决方案。为了满足这一需求,微软发布了 Visual Studio Tools for Microsoft Office (VSTO),它是 Visual Studio .NET 2003 的一个附加组件,用于使用 Word 2003 或 Excel 2003 创建托管应用程序。

Visual Studio Tools for Office 2003 (VSTO) 是一个使用 .NET 构建 Office 解决方案的绝佳工具。不幸的是,Office 2000 用户无法使用此工具。本文试图弥补这一空白。它展示了如何使用 Visual Studio .NET 2003 构建 Office 2000 解决方案。我已尝试使代码尽可能接近 VSTO 2003,以便您能够轻松迁移到 Office 2003。

入门

我将带您逐步了解使用 Visual Basic .NET 创建一个简单的 Word 应用程序的过程。我们将构建一个由 Windows 窗体组成的应用程序,该窗体接受用户数据,并在 Word 文档中显示这些数据。

启动 Visual Studio .NET,使用“文件 | 新建 | 项目”菜单项,并选择“类库”项目模板,如下所示

使用“项目| 添加引用”菜单。选择 COM 选项卡,并添加对 Microsoft Word 9.0 对象库的引用。

Imports Word
    
Public Class OfficeCodeBehind
    Friend WithEvents ThisDocument As Word.Document
    Friend WithEvents ThisApplication As Word.Application

#Region "Initialization code"
    ' Default constructor.
    Public Sub New()
    End Sub
    Public Sub Startup(ByVal application As Object, ByVal document As Object)
        ThisApplication = CType(application, Word.Application)
        ThisDocument = CType(document, Word.Document)
    End Sub
    
    Public Sub Shutdown()
        ThisApplication = Nothing
        ThisDocument = Nothing
    End Sub
    
    Private Sub ThisApplication_DocumentOpen(ByVal Doc As Word.Document) 
            Handles ThisApplication.DocumentOpen
        MsgBox("Application event Document open")
    End Sub

    Private Sub ThisDocument_New() Handles ThisDocument.New
        MsgBox("inside Document new managed code")
    End Sub
#End Region

End Class

创建一个名为 OfficeCodeBehind 的类。为 Application (ThisApplication) 和主文档 (ThisDocument) 对象创建变量声明。

创建初始化代码,其中包括例程 StartupShutdown。当用户打开 Word 文档时,会调用 Startup 例程来初始化 ThisApplicationThisDocument 变量,当用户关闭 Word 文档以执行清理时,会调用 ShutDown 例程。此外,为基本事件创建事件处理程序以及一个将字符串写入 Word 的例程。

创建一个 Windows 窗体,该窗体调用 OfficeCodeBehind 类的 WriteStringToWordDocument 例程,以将文本写入 Word。

启动 Word。使用“工具 | 宏”菜单项,然后选择 Visual Basic 编辑器。通过选择“工具 | 引用”并单击“浏览”按钮,添加对 WordTest1.tlb 文件的引用,如下所示

Dim app As New WordTest1.OfficeCodeBehind

Private Sub Document_Close()
  app.ShutDown
End Sub

Private Sub Document_Open()
  app.Startup Me.Application, Me
End Sub

ThisDocument 的 Visual Basic 编辑器中添加上述代码。

上面的代码是将 Word 文档连接到我们创建的 .NET 类库的粘合剂。当打开 Word 文档时,它会触发 Document_Open 事件,该事件又调用 OfficeCodeBehindStartUp 方法。它将对 Application (Word.Application) 的引用和对 Document (Word.Document) 的引用传递给 StartupStartup 方法将此信息复制到局部变量中并连接事件处理。

当文档关闭以执行任何清理时,会调用 Shutdown 方法。

使用 Word 和 Excel 项目模板创建 Office 项目

注意:在阅读任何内容之前,请阅读 ProjectTemplateSetup.rtf 中的说明以设置项目模板。

启动 Visual Studio .NET。使用“文件 | 新建 | 项目”菜单项,并选择“Word 文档”项目模板,如下所示

'Called when the document is opened
Private Sub ThisDocument_Open() Handles ThisDocument.Open
    MsgBox("Document Open from Managed code")
End Sub

在代码编辑器中添加上述代码。构建项目。按照上面为类库项目概述的相同步骤将 Word 文档连接到我们在 .NET 中创建的 Word 项目。

历史

  • 2004 年 11 月 20 日添加了 Word 和 Excel 项目模板。
  • 2004 年 12 月 1 日创建了一个安装项目模板的安装包。

参考文献

我强烈推荐以下文章,以使用 .NET 进行 Office 开发

未来的增强功能和反馈

我计划在时间允许时进行以下增强

  • 创建一个 Word 加载项(模仿 VSTO 2003 加载程序 OTKLOADR.DLL),以自动加载在 Word 文档的自定义属性中设置的 DLL。
  • 创建该项目的 C# 版本。

欢迎您通过电子邮件向我提供您的建议和意见。我希望根据您的反馈和您的好评进行改进:)。

© . All rights reserved.