Страница: 1 |
Вопрос: VBA: Вставка текста в определенное место Worda | Добавлено: 10.10.06 21:28 |
Автор вопроса: ![]() |
Имеется форма с текст боксом. После ввода текста в текст бокс, нужно открыть документ Ворда и вставить текст бокс в определенное место документа. Я пытался сделать через закладки, но у меня не получилось. Может быть кто-нибудь поможет. Охота облегчить ввод данных в документы, чтобы не вводить одно и тоже по несколько раз. |
Ответы | Всего ответов: 8 |
Номер ответа: 1 Автор ответа: ![]() ![]() ICQ: 354-671-214 Вопросов: 18 Ответов: 103 |
Профиль | Цитата | #1 | Добавлено: 11.10.06 11:50 |
Довольно хитрая задача. Решается несколькими способами как то:
1. Навигация по документу. Из пункта Сервис - Макросы выбираем пункт Начать запись. Переходим в начло документа, спускаемся на строку, поднимаемся на строку, перемещаемся в общем как-нибудь по документу. Останавливаем запись, идем в редактор VBA и смотрим чего мы там наковыряли - там сгенерится код VBA. Анализируем его и повторяем навигацию уже програмно. То же самое насчет вставки. VBA так изучить проще всего. 2. Замена фрагмента. Если вставлять нужно в одно фиксированное место в разных документах можно попытаться решить все через замену какого-либо специфического текста (Например ###МЕСТО_ДЛЯ_ВСТАВКИ_ТЕКСТА###) на необходимый нам текст. Как осуществить замену текста можно узнать так же через запись макроса. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 6 |
Профиль | Цитата | #2 | Добавлено: 12.10.06 17:44 |
Действительно, а я и не знал что так можно. А интересно в VB6, этот код тоже подойдет? |
Номер ответа: 3 Автор ответа: ![]() ![]() ICQ: 354-671-214 Вопросов: 18 Ответов: 103 |
Профиль | Цитата | #3 | Добавлено: 12.10.06 17:52 |
Это именно для VB6. Делаешь wo = CreateObject("Word.Application"![]() |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 6 |
Профиль | Цитата | #5 | Добавлено: 13.10.06 11:01 |
Все научился. Решил что обойдусь встроенными макросами. Уже програмку навалял на работе. Только как сделать чтобы TextBox1 проверялся на наличие введенной информации и если ее нет блокировал кнопку которая использует этот TextBox1????? |
Номер ответа: 6 Автор ответа: ![]() ![]() 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 6 |
Профиль | Цитата | #7 | Добавлено: 13.10.06 15:57 |
В принципе точно, так наверное и работает, все же один и тот же язык. А не знаешь как сделать такую штуку. Есть на форме Кнопка и Поле для ввода текста. Как сделать чтобы кнопка была неактивной пока в поле не ввели текст??? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 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 |
|