Создание пользовательского приложения документации с использованием Word и Visual Basic .NET - PullRequest
1 голос
/ 09 июня 2010

Я довольно новичок в Visual Studio (в частности, в Visual Basic .NET), но довольно давно программирую.

Здесь, в моей компании, у нас есть приложение Access, которое позволяет пользователям создавать документы на основе счетов-фактур в Great Plains, бухгалтерской программе. Документы, такие как счета, упаковочные листы, экспортная документация и т. Д. И т. Д.

Это приложение очень старое и очень сложное в обслуживании, поэтому мы переписываем его, и я выбрал этот проект в качестве своего первого проекта Visual Basic .NET.

По сути, приложение собирается разрешить пользователям делать следующее:

  1. Подтвердите информацию о счете, а затем добавьте дополнительную информацию, такую ​​как комментарии и т.п.
  2. Выберите, какие документы они хотят распечатать
  3. Откройте документы и затем разрешите пользователю редактировать документы

Последняя часть - хитрая. Пользователи прямо сейчас создают эти документы из Access и распечатывают в PDF, а затем редактируют 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

Так что я думаю, у меня вопрос, является ли это наиболее подходящим способом подойти к этому проекту или есть программный или сторонний инструмент, о котором я не знаю, который будет проще и эффективнее?

Заранее спасибо.

1 Ответ

1 голос
/ 09 июня 2010

Недавно я участвовал в проекте, который сделал нечто очень похожее на это, и мы закончили автоматизировать Word из VB.Net для вставки данных в закладки.Фактический код был достаточно прост для написания, просто будьте осторожны, чтобы потом правильно все закрыть, легко забыть какую-нибудь ссылку, чтобы Word не закрывался должным образом.

Кроме того, что не былопроблемы, и они уже несколько месяцев используют систему.

Однако следует помнить одну вещь: если вы ставите две закладки сразу за другой, кажется, что одна закладка может перезаписать другую, поэтомустоит добавить пробел между ними (просто несколько пробелов работали нормально).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...