Заполнение документа Word средствами VB.NET

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Заполнение документа Word средствами VB.NET

Сообщение krukovis84 » 07.12.2010 (Вт) 11:59

Всем доброго времени суток!
У меня есть "рыба" договора (вордовский файл). Я хочу автоматизировать заполение договора.
Подскажите пожалуйста какими инструментами вы бы это делали. От чего нужно отталкиваться? Как это сделать проще, правильнее?
С какой стороны подходить к этой задаче?

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 157
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: Заполнение документа Word средствами VB.NET

Сообщение Sam777e » 07.12.2010 (Вт) 17:08

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


1. Подробнее информация [ примеры, детали,. . .- но и общее ] - адекватнее совет.
2. И чем не подходят обычные средства: Документ на основе Шаблона с Полями, Макросы, Automation . . . ?


Вдогонку: немало полезного там http://word.tips.net/
Последний раз редактировалось Sam777e 08.12.2010 (Ср) 6:07, всего редактировалось 1 раз.
Здоровья и удачи

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Заполнение документа Word средствами VB.NET

Сообщение Viper » 07.12.2010 (Вт) 19:55

krukovis84 писал(а):Всем доброго времени суток!
У меня есть "рыба" договора (вордовский файл). Я хочу автоматизировать заполение договора.
Подскажите пожалуйста какими инструментами вы бы это делали. От чего нужно отталкиваться? Как это сделать проще, правильнее?
С какой стороны подходить к этой задаче?
Если рыба эта будет не в формате Word, а в формате RTF, то можно особым образом выделить в файле-шаблоне необходимые места, а затем при создании документа заменять на реальныый текст.
Весь мир матрица, а мы в нем потоки байтов!

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Заполнение документа Word средствами VB.NET

Сообщение FireFenix » 07.12.2010 (Вт) 20:24

Да ничего сложного, качаем (если нету) аддон VSTO и с помощью объектов/функций/процедур формируем документ, или же заменяем в исходном строки по какой либо метке или в определённых позициях
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Shkolnik
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 06.06.2010 (Вс) 11:09

Re: Заполнение документа Word средствами VB.NET

Сообщение Shkolnik » 11.12.2010 (Сб) 19:09

Автоматизация OLE.

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Заполнение документа Word средствами VB.NET

Сообщение krukovis84 » 17.12.2010 (Пт) 11:35

Всем спасибо! Как то сразу не нашел статью http://support.microsoft.com/kb/316383/ru - тут и информация как раз по теме и ссылки внизу хорошие. Хорошая мысля приходит опосля.... :D

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Заполнение документа Word средствами VB.NET

Сообщение krukovis84 » 22.12.2010 (Ср) 21:17

Всем снова привет!

Проблема появилась откуда не ждал. Решил создавать документ на основе шаблона card2.dot . В этом шаблоне есть слово family Делаю так:
Код: Выделить всё
Imports Word = Microsoft.Office.Interop.Word
Public Class frmReport
Private Sub btnStudents_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStudents.Click
        Dim oWord As Word.Application
        Dim oDoc As Word.Document
 
        'Старт программы Word и открытие документа
        oWord = CreateObject("Word.Application")
        oWord.Visible = True
        oDoc = oWord.Documents.Add(Application.StartupPath & "\card2.dot")
        oDoc.Bookmarks.Item("family").Range.Text = "Иванов"
End Sub
End Class


Ошибка вылетает на создании закладки. Ошибка:
System.Runtime.InteropServices.COMException не обработано
ErrorCode=-2146822347
HelpLink="C:\Program Files\Microsoft Office\OFFICE11\1049\wdmain11.chm#25421"
Message="Запрашиваемый номер семейства не существует."


Что делаю не так? :?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Заполнение документа Word средствами VB.NET

Сообщение FireFenix » 23.12.2010 (Чт) 0:43

наверное обращаешься к несуществующему элементу?
Код: Выделить всё
oDoc.Bookmarks.Item("family")


шаблон card2.dot в студию
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Заполнение документа Word средствами VB.NET

Сообщение krukovis84 » 23.12.2010 (Чт) 1:20

Во вложении.

Я пробовал уже и делать из слова family закладку (ctrl+F9 при выделенном слове). И просто как слово оставлял.
Я делаю ссылку на COM-библиотеку Microsoft Word Object Library.
Вложения
card2.dot
(24 Кб) Скачиваний: 206

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Заполнение документа Word средствами VB.NET

Сообщение FireFenix » 23.12.2010 (Чт) 12:37

krukovis84 писал(а):Я пробовал уже и делать из слова family закладку (ctrl+F9 при выделенном слове)

Не знаю, что делает Ctrl+F9, но Закладки добавляются через Вставка -> Сыылки -> Закладка
http://office.microsoft.com/en-us/word- ... 26532.aspx

Код: Выделить всё
Imports Word = Microsoft.Office.Interop.Word

Public Class Form1
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim oWord As Word.Application
        Dim oDoc As Word.Document

        oWord = New Word.Application
        oWord.Visible = True

        oDoc = oWord.Documents.Add("C:\card2_1.dot")

        oDoc.Bookmarks.Item("surname").Range.Text = "Иванов"
        oDoc.Bookmarks.Item("name").Range.Text = "Вадим"
        oDoc.Bookmarks.Item("second_name").Range.Text = "Перович"
    End Sub
End Class
Вложения
card2_1.dot
(24.5 Кб) Скачиваний: 243
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Заполнение документа Word средствами VB.NET

Сообщение krukovis84 » 23.12.2010 (Чт) 15:52

Спасибо большое! Да, я не правильно создавал закладку. Вычитал в справке способо ctrl+f9 )). Читал правда уже в 2 ночи, видимо не то что то вычитал... :cyclops:

sin108
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 18.05.2011 (Ср) 19:49

Re: Заполнение документа Word средствами VB.NET

Сообщение sin108 » 19.05.2011 (Чт) 21:10

Самый простой вариант, при котором в дальнейшем можно форматировать текст - через закладки(bookmarks)
В тексте болванки создаешь закладку, например: Заказчик, которую вешаешь на слово "Заказчик", выделяешь его цветом, чтобы легче искать было, а потом в коде меняешь текс закладки на нужный текст.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList