【问题标题】:Creating a custom documentation application using Word and Visual Basic .NET使用 Word 和 Visual Basic .NET 创建自定义文档应用程序
【发布时间】:2010-06-09 21:22:48
【问题描述】:

我对 Visual Studio(特别是 Visual Basic .NET)还很陌生,但已经编程了很长时间。

在我的公司,我们有一个 Access 应用程序,它允许用户根据 Great Plains 中的发票创建文档,这是一个会计程序。单据如发票、装箱单、出口单证等。

这个应用程序非常老旧,很难维护,所以我们正在重写,我选择这个项目作为我的第一个 Visual Basic .NET 项目。

应用程序要做的基本上是允许用户执行以下操作:

  1. 拉起发票信息,然后添加一些辅助信息,如cmets等
  2. 选择要打印的文档
  3. 打开文档,然后允许用户编辑文档

最后一部分是棘手的部分。用户现在在 Access 之外创建这些文档并打印为 PDF,然后使用特定于文档和客户的 cmets 编辑 PDF。如果他们不必这样做,那么我可以使用罐头报告或其他东西。

我想做的是创建带有文本框的 Word 模板,并在这些文本框中添加可寻址的书签。当用户去打印文档时,打开 Word,从数据库(SQL Server)中填充书签,然后让他们绘制文本框并在打印文档之前用他们想要的任何内容填充它们,然后他们可以保存它们。

这是我为此编写的代码(当然最终结果会复杂得多):

Public Const wdPageBreak = 7

Dim oWord As Word.Application
Dim oDoc As Word.Document

'Open recordset for rsInvoice

oWord = CreateObject("Word.Application")

oDoc = oWord.Documents.Add()
oDoc.Application.Selection.Range.InsertFile("C:\document-c.dotx")
oDoc.Application.Selection.Range.InsertBreak(wdPageBreak)

oDoc.Application.Selection.Range.InsertFile("C:\document-b.dotx")
oDoc.Application.Selection.Range.InsertBreak(wdPageBreak)

oDoc.Application.Selection.Range.InsertFile("C:\document-a.dotx")

oDoc.Bookmarks("document_a_invoice_number").Range.Text = rsInvoice("invoice_number")
oDoc.Bookmarks("document_a_customer_number").Range.Text = rsInvoice("customer_number")
...
etc.
etc.
...
oWord.Visible = True

所以我想我的问题是这是处理这个项目的最合适的方式,还是有一种方式以编程方式或通过我不知道的第三方工具会更容易和更有效?

提前致谢。

【问题讨论】:

    标签: .net vb.net ms-word


    【解决方案1】:

    我最近参与了一个与此非常相似的项目,我们最终从 VB.Net 自动化 Word 以将数据插入书签。实际代码很容易编写,只是要小心,以便之后正确关闭所有内容,很容易忘记某处的某些引用,从而导致 Word 无法正确关闭。

    除此之外没有任何问题,他们已经使用该系统好几个月了。

    但需要注意的一点是,如果您将两个书签紧挨着放置,有时一个书签似乎会覆盖另一个书签,因此值得在它们之间添加一些空格(只需几个空格就可以了)。

    【讨论】:

    • 你使用的代码和我上面的类似吗?我们的用户要做的是从 x 个文档中选择 x、y、z 等。然后我将使用他们选择的内容创建一个大文档并插入适当的数据。我唯一担心的是,似乎没有办法让 Word 出于文档目的在文档上显示书签名称。您是否使用带有书签的文本框来构建文档?
    • @Tom:我看了有一段时间了,所以我不确定,但看起来很相似。关于书签,我并没有真正创建模板,我只是写了代码,但是当我查看它们时,它似乎只是书签,没有文本框,但我不太了解 Word,所以我不能说当然。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2016-05-23
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多