Shanikov писал(а):Добрый день уважаемые форумчане! Программа должна вставлять занесенные в нее данные (текстбоксы, лэйблы, датапикеры) и по нажатию кнопки формировать документ ворд, на основе уже имеющегося шаблона. Все references подключены, ворд открывается, шаблон открывается, а вот данные не вставляются! Почему не знаю. Помогите народ пожауйста! Заранее благодарен!
- Код: Выделить всё
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
axWord = New Word.Application ' otkrivaem sam word
axWord.Visible = True ' delaem ego vidimim
axDoc = axWord.Documents.Open("D:\dog_perevozki.dotx") ' otkrivaem document v uzhe otkritom worde
axCC.Item("nomer_dog").Range.Text = dtp1.Value
End Sub
На последней строчке ошибка вылазиет!
VB 2008 Express & MS Office 2007
[Viper] :: Пользуемся тэгами CODE!
Как ты определяешь место, куда нужно вставить то или иное значение? по закладкам? тогда строка
- Код: Выделить всё
axCC.Item("nomer_dog").Range.Text = dtp1.Value
неправильная. Должно быть:
- Код: Выделить всё
axDoc.Bookmarks(«имя_твоей_закладки»).Range.Text=dtp1.Value
Другого способа нет. Я уже не одно приложение такое сделал. Все работает. А если данных для ввода много, то полезно, чтобы имя контрола, из которого ты вставляешь значение, совпадало с именем закладки. Тогда передача значений организуется одним циклом, и даже если ты добавишь новую закладку и контрол, то уже ничего не нужно будет переписывать.
Еще замечание по твоему коду. Не используй раннее связывание. Лучше объяви
- Код: Выделить всё
Dim axWord as Word.Application
, а затем уже присваивай ему значение. Кстати, нужно еще проверятьна уже запущенный Word, чтобы избежать дубликатов. Есть такой универсальный метод из книги:
- Код: Выделить всё
Try
axWord=GetObject("Word.Application")'пытаемся получить ссылку на экземпляр приложения, если оно уже запущено
Catch'если не запущено
axWord=CreateObject("Word.Application")'тогда создаем экземпляр этого приложения.
End Try