1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
1

Макрос для поиска и вставки текста

27.04.2013, 04:08. Показов 12993. Ответов 19
Метки нет (Все метки)

Друзья, помогите, пожалуйста, с простенькой задачкой.

Пусть, помимо прочего текста, в документе имеется пару абзацев, скажем, такого содержания:

Сегодняшняя дата:
...
Сумма Вашей задолженности составляет «» руб.


Необходимо вписывать текущую дату и какие-либо цифры соответственно. Цифры сделать жирными. Шрифт как у абзаца (или параграфа?). Т.е. должно получиться вот так:

Сегодняшняя дата: 27.04.2013
...
Сумма Вашей задолженности составляет «27042013» руб.
Если не сложно, накидайте, макросик


Благодарю!


Не по теме:

P.S. А чем, кстати, параграф от абзаца отличается? :)

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2013, 04:08
Ответы с готовыми решениями:

Нужен макрос для поиска полужирного текста
Добрый день. Нужен макрос для поиска полужирного текста в документе и копирования результатов в...

Макрос вставки текста в верхнем колонтитуле в ячейке таблицы
Всем привет! Ребята, подскажите, как макросом в верхнем колонтитуле выбрать таблицу, в этой...

Макрос поиска и вставки
Здравствуйте. Вопрос жизни и смерти....помогите пожалуйста.. Нужен макрос или какое-то другое...

Макрос для поиска текста в PDF и копирования в excel
добрый день! посталена вот такая задача, хотел бы ей как-то автоматизировать, что можете...

19
5464 / 1144 / 50
Регистрация: 15.09.2012
Сообщений: 3,469
27.04.2013, 07:09 2
The_Immortal, предполагается работать с одним Word-документом или несколькими?
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.04.2013, 15:17  [ТС] 3
Скрипт, с одним документом.
0
5464 / 1144 / 50
Регистрация: 15.09.2012
Сообщений: 3,469
27.04.2013, 15:28 4
The_Immortal, а как это всё должно работать? Куда вы должны вводить текст или куда нажимать?
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.04.2013, 17:07  [ТС] 5
Скрипт, на самом деле все это дело (передаваемые данные) будет идти из другой программы посредством OLE-сервера.

Мне просто нужен пример, как это будет смотреться на VBA. Текст пусть будет любым и статичным, т.е. заранее указанным в параметрах.
0
5464 / 1144 / 50
Регистрация: 15.09.2012
Сообщений: 3,469
27.04.2013, 17:15 6
The_Immortal, вставьте в Word-документ в то место, куда должны поступать данные, закладку.

Закладка имеет имя и порядковый номер. По имени и порядковому номеру можно обращаться к закладке и вставлять в то место, где находится закладка, текст.

В "Word 2010" вот так можно включить отображение закладок в документе (по умолчанию закладки скрыты):
Файл - Параметры - Дополнительно - Показывать содержимое документа - флажок Показывать закладки.

Закладки есть двух видов:
  1. в виде вертикальной черты;
  2. в виде двух квадратных скобок.
Вид закладки влияет на то, как будет вставлен текст в закладку. Если закладка в виде вертикальной черты, то закладка останется после вставки текста, если закладка в виде квадратных скобок, то закладка удаляется после вставки текста.
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.04.2013, 17:33  [ТС] 7
Скрипт, каждая закладка имеет свой какой-то идентификатор? Просто как их различать? По счету?

И все-таки, можно как-нибудь обойтись без закладок?
Мне просто надо найти текст и после него вставить другой текст. Все. Предполагается, что найденный текст будет уникальным.
0
5464 / 1144 / 50
Регистрация: 15.09.2012
Сообщений: 3,469
27.04.2013, 18:27 8
Цитата Сообщение от The_Immortal Посмотреть сообщение
И все-таки, можно как-нибудь обойтись без закладок?
это одно из назначений закладок - использование их в макросах. Пользователю неудобно работать с закладками, т.к. закладки представляют собой какие-то мелкие чёрточки, которые едва видно на мониторе, и между этих чёрточек что-то записать вряд ли получится, если работу надо делать быстро и много.

А то, что вы хотите, - это неправильный подход.
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.04.2013, 18:35  [ТС] 9
Скрипт,
Цитата Сообщение от Скрипт Посмотреть сообщение
А то, что вы хотите, - это неправильный подход.
Понял.

А можно услышать ответ на
Цитата Сообщение от The_Immortal Посмотреть сообщение
каждая закладка имеет свой какой-то идентификатор? Просто как их различать? По счету?
И если не сложно, то пример макроса, работающего с закладками.
0
5464 / 1144 / 50
Регистрация: 15.09.2012
Сообщений: 3,469
27.04.2013, 18:37 10
The_Immortal, в интернете полно должно быть информации. Поищите, а если вопросы останутся, то уточните, что не получается. Эти закладки уже лет 15 - 20 используются, вы не первый, кто этим начинает заниматься.
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.04.2013, 19:12  [ТС] 11
Цитата Сообщение от The_Immortal Посмотреть сообщение
каждая закладка имеет свой какой-то идентификатор? Просто как их различать? По счету?
Цитата Сообщение от Скрипт Посмотреть сообщение
Закладка имеет имя и порядковый номер. По имени и порядковому номеру можно обращаться к закладке и вставлять в то место, где находится закладка, текст.
Надо быть повнимательнее


Скрипт,
Цитата Сообщение от Скрипт Посмотреть сообщение
а если вопросы останутся, то уточните, что не получается
Нашел в Интернете пример, однако у меня он не работает:

Visual Basic
1
2
3
Sub Procedure_1()
ActiveDocument.FormFields("закладка1").Result = "test"
End Sub
Запрашиваемый номер семейства не существует.
В чем проблема?

На документ помещена закладка с именем "закладка1".
0
5464 / 1144 / 50
Регистрация: 15.09.2012
Сообщений: 3,469
27.04.2013, 19:17 12
The_Immortal, в VBA-Word закладка называется "Bookmark".

Вообще, чтобы узнать VBA-имя какого-то элемента Word-документа, нужно начинать с макрорекордера. Потому что, чтобы знать VBA-имена всех объектов в программе "Word", нужно каждый день макросы писать.

Включите макрорекордер, вставьте закладку, отключите макрорекордер. Перейдите в "VBA" и посмотрите код.
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.04.2013, 19:26  [ТС] 13
Скрипт,
Цитата Сообщение от Скрипт Посмотреть сообщение
нужно каждый день макросы писать
У меня нет такой необходимости. Мне всего лишь надо разово решить задачу, не охватывая VBA, т.к. это совершенно иррационально. У меня другая специализация.

Цитата Сообщение от Скрипт Посмотреть сообщение
Включите макрорекордер, вставьте закладку, отключите макрорекордер. Перейдите в "VBA" и посмотрите код.
Сделал.
А как вставить текст на место закладки без использования макросов? Чтобы также отследить через макрорекордер.
0
5464 / 1144 / 50
Регистрация: 15.09.2012
Сообщений: 3,469
27.04.2013, 19:29 14
Цитата Сообщение от The_Immortal Посмотреть сообщение
А как вставить текст на место закладки без использования макросов?
таких действий в программе "Word" нет. В закладки просто так текст не помещают, для этого нужно сделать какие-то сложные манипуляции.

Поэтому дальше перейдите в "VBA" напишите:
Activedocument.bookmarks(1)

поставьте точку и смотрите, какие члены есть у этого объекта. По члену можно смотреть справку. Хоть справка и на английском языке, но примеры можно посмотреть. Чтобы открыть справку по члену объекта, поставьте курсор на член и нажмите клавишу "F1".
0
5557 / 1363 / 150
Регистрация: 08.02.2009
Сообщений: 4,106
Записей в блоге: 30
28.04.2013, 17:05 15
Вот эта ваша задача — основная в делопроизводстве, и Word заботливо предоставляет нам специальные инструменты.

Регулярно я этим не занимаюсь — каждый раз приходится ломать голову, посему прилагаю пока готовый документ.

Там клавишей F9 открываете окно ввода (так работает поле {ASK} — его код см. по ALT-F9), и введённая зарплата (число) попадает в места закладок; результат виден по CTRL-F2 (это предварительный промотр перед печатью) или после обновления всех полей: F9, выделив всё.

Сами же закладки, с вариацией свойств, дипломированные делопроизводители ставят и просматривают по CTRL-SHIFT-F5 — это куда практичнее, чем рыться в красивых панельках!

Примечаниe. Приведены клавиатурные сокращения команд работы с полями и закладками в любой версии MS Word.
Вложения
Тип файла: doc Поля-тополя.doc (45.5 Кб, 72 просмотров)
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.04.2013, 18:33  [ТС] 16
Sasha_Smirnov, здорово!
Однако все это как-то сложновато...

Мне всего лишь надо вставить текст по месту закладки. И сделать максимально простым образом, т.к. потом все это дело еще переводить.

Вообще исток здесь: Заполнение Word документа данными из строки DBGrid

Мне бы всего лишь пример получить...


Скрипт,

Цитата Сообщение от Скрипт Посмотреть сообщение
Поэтому дальше перейдите в "VBA" напишите:
Activedocument.bookmarks(1)
На это я получаю:
Invalid use of property

UPD:
В общем, что-то начало двигаться

Получилось два варианта.

Первый:
C++
1
2
3
4
5
6
7
8
9
10
11
12
  
  Variant vVarApp, vVarDocs, vVarDoc, v1, v2;
  String path = "C:\\test.doc", BookMark = "dfs", InsertText = "text";
  vVarApp = CreateOleObject("Word.Application");
  vVarApp.OlePropertySet("Visible", true);
  vVarDocs = vVarApp.OlePropertyGet("Documents");
  vVarDocs.OleProcedure("Open", StringToOleStr(path));
  vVarDoc = vVarDocs.OleFunction("Item", 1);
  vVarDoc.OleProcedure("Activate");
  v1 = vVarDoc.OlePropertyGet("Bookmarks");
  v2 = v1.OleFunction("Item", StringToOleStr(BookMark));
  v2.OlePropertyGet("Range").OlePropertySet("Text", StringToOleStr(InsertText));
и второй:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
  
  Variant vVarApp, vVarDocs, vVarDoc, v1, v2;
  String path = "C:\\test.doc", BookMark = "dfs", InsertText = "text";
  vVarApp = CreateOleObject("Word.Application");
  vVarApp.OlePropertySet("Visible", true);
  vVarDocs = vVarApp.OlePropertyGet("Documents");
  vVarDocs.OleProcedure("Open", StringToOleStr(path));
  vVarDoc = vVarDocs.OleFunction("Item", 1);
  vVarDoc.OleProcedure("Activate");
  v1 = vVarDoc.OlePropertyGet("Bookmarks");
  v2 = v1.OleFunction("Item", StringToOleStr(BookMark));
  v2 = v2.OlePropertyGet("Range");
  v2.OleProcedure("InsertAfter", StringToOleStr(InsertText));
, где BookMark - название закладки, InsertText - текст, который будем помещать.

Кто-нибудь может пояснить, почему можно обойтись без процедуры InsertAfter (первый вариант). Код не VBA-шный, но думаю, что должно быть понятно.

Кстати, был бы благодарен, если бы его кто-нибудь перевел в VBA Интересуют последние строчки - работа с закладками.
1
5557 / 1363 / 150
Регистрация: 08.02.2009
Сообщений: 4,106
Записей в блоге: 30
28.04.2013, 19:29 17
Для некоторых (я не исключение) это тёмный лес, так что приложу "офисно-планктонный" пример, без программирования:
Миниатюры
Макрос для поиска и вставки текста   Макрос для поиска и вставки текста   Макрос для поиска и вставки текста  

Вложения
Тип файла: doc Болванка-Ask.doc (22.5 Кб, 65 просмотров)
1
1566 / 502 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.04.2013, 19:39  [ТС] 18
Sasha_Smirnov, чудеса творите Т.е. Вы вообще без макросов обходитесь?
0
5557 / 1363 / 150
Регистрация: 08.02.2009
Сообщений: 4,106
Записей в блоге: 30
28.04.2013, 21:24 19
Так уж и чудеса! Это же уровень дипломированной (ну если без взяток) секретарши. Хочется верить.

Под тёмным лесом я Си-плас-плас подразумевал — 20 лет его не видел! И мало у кого он установлен.

А макросы-то да, сам Ворд велел! Без них тоска.
1
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 7
21.11.2014, 21:25 20
Уважаемые форумчане! Подскажите пожалуйста в какую сторону копать в данном вопросе, т.к. только недавно начал изучать VBA.
Задача: в определенном месте документа word указал закладку bookmarks ("точка_вставки1"), после определенных событий кода происходит вставка в указанное место номера строки , например " 178, ".
Как продолжить написание кода чтобы после вставки номера строки 178, программа вставляла следующие определенные строки после 178, например 199, 301, 405, и т.д.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2014, 21:25

Макрос поиска критерий и их вставки в другой лист
я прошу помощьи Какой макрос нужно сделать чтобы он искал на листе критерии например 1.-date от...

Макрос поиска текста в Exel на VBA
Уважаемые Гуру! Получил сегодня просьбу в виде "Нужен совет. Мне надо макрос поиска текста в...

MultiReplace - Word макрос поиска и замены текста
Добрый день. Хочу представить для обсуждения мой небольшой, но полезный макрос. Макрос...

Макрос для вставки словосочетания в ячейки
Добрый день, дорогие программисты! Прошу сделать макрос для эксель, который вставлял бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru