Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: VBA: Вставка текста в определенное место Worda Добавлено: 10.10.06 21:28  

Автор вопроса:  kovanto
Имеется форма с текст боксом. После ввода текста в текст бокс, нужно открыть документ Ворда и вставить текст бокс в определенное место документа. Я пытался сделать через закладки, но у меня не получилось. Может быть кто-нибудь поможет. Охота облегчить ввод данных в документы, чтобы не вводить одно и тоже по несколько раз.

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #1 Добавлено: 11.10.06 11:50
Довольно хитрая задача. Решается несколькими способами как то:
1. Навигация по документу. Из пункта Сервис - Макросы выбираем пункт Начать запись. Переходим в начло документа, спускаемся на строку, поднимаемся на строку, перемещаемся в общем как-нибудь по документу. Останавливаем запись, идем в редактор VBA и смотрим чего мы там наковыряли - там сгенерится код VBA. Анализируем его и повторяем навигацию уже програмно. То же самое насчет вставки. VBA так изучить проще всего.
2. Замена фрагмента. Если вставлять нужно в одно фиксированное место в разных документах можно попытаться решить все через замену какого-либо специфического текста (Например ###МЕСТО_ДЛЯ_ВСТАВКИ_ТЕКСТА###) на необходимый нам текст. Как осуществить замену текста можно узнать так же через запись макроса.

Ответить

Номер ответа: 2
Автор ответа:
 kovanto



Вопросов: 2
Ответов: 6
 Профиль | | #2 Добавлено: 12.10.06 17:44
Действительно, а я и не знал что так можно. А интересно в VB6, этот код тоже подойдет?

Ответить

Номер ответа: 3
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #3 Добавлено: 12.10.06 17:52
Это именно для VB6. Делаешь wo = CreateObject("Word.Application";) или задаешь его через References, дальше есть там, методы не помню, Search или Replace, но работает 100%, я этим занимался одно время. Это самый быстрый способ замены.

Ответить

Номер ответа: 4
Автор ответа:
 kovanto



Вопросов: 2
Ответов: 6
 Профиль | | #4 Добавлено: 12.10.06 18:02
Получился такой макрос.
************
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
        .Text = "1234"
        .Replacement.Text = "4321"
End With
Selection.Find.Execute Replace:=wdReplaceAll
**************

Затем мне надо, например добавить вот этот код в начало программы
**************
Set WordApp = New Word.Application
WordApp.Visible = True
Set DocWord = WordApp.Documents.Open("C:\123.doc";)
DocWord.Activate
**************
Добавляю кнопку и он заменит текст 1234 на 4321 в файле 123???

PS Я просто не могу проверить у меня сейчас нету VB6.

Ответить

Номер ответа: 5
Автор ответа:
 kovanto



Вопросов: 2
Ответов: 6
 Профиль | | #5 Добавлено: 13.10.06 11:01
Все научился. Решил что обойдусь встроенными макросами. Уже програмку навалял на работе. Только как сделать чтобы TextBox1 проверялся на наличие введенной информации и если ее нет блокировал кнопку которая использует этот TextBox1?????

Ответить

Номер ответа: 6
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #6 Добавлено: 13.10.06 15:32
VB6 однозначно будет так работать. Все, что генерится в VBA прокатит и на 6-м, но только перед всеми командами ворда нужно ставить WordApp., например не Selection.Find, а WordApp.Selection.Find, но точно не помню, возможно внутрь еще нужно добавить WordApp.CurDoc.Selection.Find

Ответить

Номер ответа: 7
Автор ответа:
 kovanto



Вопросов: 2
Ответов: 6
 Профиль | | #7 Добавлено: 13.10.06 15:57
В принципе точно, так наверное и работает, все же один и тот же язык. А не знаешь как сделать такую штуку. Есть на форме Кнопка и Поле для ввода текста. Как сделать чтобы кнопка была неактивной пока в поле не ввели текст???

Ответить

Номер ответа: 8
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #8 Добавлено: 27.02.07 18:08
Допустим имя формы - форма1
         имя кнопки - кнопка1
         имя текстового поля - текст1

надо установить свойство кнопки которое в окне свойств кнопки называется Enabled в значение False,
потом 2 раза щёлкнуть по текстовому полю. Появится поцедура обработки события. Потом надо кое что дописать чтобы получилось так:

Private Sub текст1_Change()
кнопка1.Enabled = true
End Sub

Событие текст1_Change наступает когда изменяется текст в текстовом поле. (это для общего развития)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам