1 / 1 / 0 Регистрация: 27.06.2012 Сообщений: 10 |
|
1 |
|
28.06.2012, 08:46. Показов 49464. Ответов 30
Добрый день! …………. Необходимо выделить и скопировать все, что находится после слова «Олег» до слова «Иван». Добавлено через 1 час 27 минут
1 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
28.06.2012, 08:46 |
30 |
KoGG 5590 / 1580 / 406 Регистрация: 23.12.2010 Сообщений: 2,366 Записей в блоге: 1 |
||||
28.06.2012, 11:43 |
2 |
|||
Сообщение было отмечено как решение Решение
3 |
1 / 1 / 0 Регистрация: 27.06.2012 Сообщений: 10 |
|
28.06.2012, 13:58 [ТС] |
3 |
спасибо большое
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
28.06.2012, 20:28 |
4 |
|||
Сообщение было отмечено как решение РешениеМожно одним поиском обойтись:
4 |
0 / 0 / 0 Регистрация: 23.10.2013 Сообщений: 4 |
|
29.10.2013, 09:53 |
5 |
А как быть если в тексте несколько фрагментов, которые нужно выделить по очереди?
0 |
Sasha_Smirnov 5561 / 1367 / 150 Регистрация: 08.02.2009 Сообщений: 4,107 Записей в блоге: 30 |
||||
29.10.2013, 10:49 |
6 |
|||
Если автоматизировать, то вот от этого можно плясать:
Конечно, с подгонкой длины ограничивающих слов:
ActiveDocument.Range(r.Start + 4, r.End — 4).Select Лучше опишите весь проект: возможно, чем менять код, легче поставить закладки — и по ним уже выделять.
0 |
0 / 0 / 0 Регистрация: 23.10.2013 Сообщений: 4 |
|
30.10.2013, 03:13 |
7 |
Имеется документ, состоящий из некоторого количества блоков текста. Каждый блок имеет вид [начало] текст [конец]. Текст выгружается из БД, причем без форматирования и каждая строка заканчивается символом абзаца (^p), и приходитсякаждый раз исправлять текст. Я написал макрос, который приводит текстовку в нормальный вид, разбивает на абзацы выбранный фрагмент документа, поэтому приходится постоянно самостоятельно выделять блок текста и выполнять макрос. За реальный абзац я беру только сочетание вида «.^p», остальные заменяю на пробелы. Код, который подсказал KoGG’a выделяет только первый блок, а хотелось бы чтобы происходило поочередное выделение и форматирование каждого блока текста во всем документе.
0 |
0 / 0 / 0 Регистрация: 23.10.2013 Сообщений: 4 |
|
30.10.2013, 05:20 |
9 |
Спасибо за подсказку, но сейчас посидел, покрутил автоформат, он делает не совсем то, что нужно — форматирует весь документ, мне же нужно исправить только текстовку блока, не затрагивая иной информации., т.е. от выделения фрагментов врятли получится уйти, даже при использовании автоформата. Если есть код Вашего исправителя, было бы рад увидеть его
0 |
Sasha_Smirnov 5561 / 1367 / 150 Регистрация: 08.02.2009 Сообщений: 4,107 Записей в блоге: 30 |
||||
30.10.2013, 10:17 |
10 |
|||
И мне было бы радостно, но с собой не ношу — он в офисе… Да и воздействует он на весь документ. А вот Автоформат, возможно, на выделение:
(возможно, чушь написал: попробовать не могу: я не в офисе)
0 |
0 / 0 / 0 Регистрация: 23.10.2013 Сообщений: 4 |
|
30.10.2013, 10:23 |
11 |
Автоформат выполняется в выделенной области, но опять же, нужно выделить несколько областей, чтобы весь документ был в нормальном виде)
0 |
361 / 38 / 2 Регистрация: 16.03.2013 Сообщений: 186 |
|
31.10.2013, 13:47 |
13 |
Как быть, если нужно выделить все вхождения между Иван*Олег? Иван………..Олег
0 |
Аксима 6076 / 1320 / 195 Регистрация: 12.12.2012 Сообщений: 1,023 |
||||
31.10.2013, 17:51 |
14 |
|||
Как быть, если нужно выделить все вхождения между Иван*Олег? Использовать замечательный код Казанского из поста №4 данной темы, конечно же:
Как говорится, найдите 10 отличий .
С уважением,
1 |
361 / 38 / 2 Регистрация: 16.03.2013 Сообщений: 186 |
|
31.10.2013, 18:58 |
15 |
Aksima Спасибо. Только это скорее поиск, чем выделение, нельзя этот текст обработать. Подскажите, в какую часть кода можно обрабатывающую часть добавить, например стиль присвоить.
0 |
Аксима 6076 / 1320 / 195 Регистрация: 12.12.2012 Сообщений: 1,023 |
||||||||
31.10.2013, 23:11 |
16 |
|||||||
нельзя этот текст обработать Неправда — можно. Замените строчку, отвечающую за выделение текста…
…на код обработки текста. Например, после замены ее на:
найденный текст будет выделяться стилем «Сильное выделение». С уважением,
2 |
4 / 4 / 0 Регистрация: 18.02.2013 Сообщений: 539 |
|
31.10.2013, 23:15 |
17 |
привет. вроде ворд, а не понял о чем речь идет. можно скрин результата посмотреть. чтобы мне было понятно
0 |
361 / 38 / 2 Регистрация: 16.03.2013 Сообщений: 186 |
|
31.10.2013, 23:50 |
18 |
Сообщение было отмечено как решение РешениеAksima спорить не буду). Я имел в виду, что средствами Word … Спасибо еще раз. койтемиров Миниатюры
0 |
4 / 4 / 0 Регистрация: 18.02.2013 Сообщений: 539 |
|
01.11.2013, 00:22 |
19 |
Slamzor, а для чего такая писанина в ворде нужна бывает? к примеру
0 |
361 / 38 / 2 Регистрация: 16.03.2013 Сообщений: 186 |
|
01.11.2013, 08:10 |
20 |
, а для чего такая писанина в ворде нужна бывает? к примеру В дипломе, в диссертации, в тех документации. Да мало ли где.
0 |
Доброго времени суток всем подписчикам и читателям блога scriptcoding.ru. В этой статье мы продолжим изучать класс Selection, который показывает, как выделить фрагмент текста в документе Word.
Для начала давайте вспомним, что выделение фрагмента текста осуществляется следующим образом: в большинстве случаев нужно выбрать несколько фрагментов, для этого сначала выбираем один нужный фрагмент, далее удерживаем клавишу «Ctrl« и выбираем остальные фрагменты. Теперь перейдем к теме публикации…
Объект Word Selection содержит довольно много методов, большая часть из которых практически не используется, да и превращать блог в энциклопедию просто нет смысла. Поэтому, я решил разбить описание методов на две статьи, выбрав только те, которые чаще всего используются. В этой первой части я рассмотрю примеры работы с двумя категориями – методы с префиксомInsert и Move. Со второй частью можете ознакомиться в статье «Объект Word Selection — выделение текста, методы #2«.
Содержание
- Методы Insert… – выделение фрагментов текста в Word
- Методы Insert… – выделение фрагментов текста в Word
- Методы Insert… – выделение фрагментов текста в Word
- Методы Insert… – выделение фрагментов текста в Word
Методы Insert… – выделение фрагментов текста в Word
Примеры будут как для редактора VBA, так и для сценариев Windows Script Host, и так, начнем…
Методы с префиксом Insert… позволяют вставить текст в документ:
InsertAfter(text) и InsertBefore(text) – Вставка текста (text) в конец или в начало выделения. При отсутствии выделения вставка производится там, где находится курсор. Сам материал остается выделенным.
InsertBreak(type) — Вставляет страницу, колонку или секцию. Параметр type содержит значение константы WdBreakType:
- wdTextWrappingBreak — 11 — Конец текущей строки и продолжение вставки ниже изображения, таблицы или другого объекта. Материал продолжается на следующей пустой строке, которая не содержит таблицу, совмещенную с левой или правой границей.
- wdLineBreakClearRight — 10 — Перевод на новую строку.
- wdLineBreakClearLeft — 9 — Перевод на новую строку.
- wdColumnBreak — 8 — Разрыв колонки.
- wdPageBreak — 7 — Вставка новой страницы.
- wdLineBreak — 6 — Перевод на новую строку.
- wdSectionBreakOddPage — 5 — Начало нового раздела со следующей нечетной страницы.
- wdSectionBreakEvenPage — 4 — Начало нового раздела со следующей четной страницы.
- wdSectionBreakContinuous — 3 — Новый раздел без разрыва страницы.
- wdSectionBreakNextPage — 2 — Начало нового раздела со следующей страницы.
Прежде чем приступать к программированию, стоит сделать некоторое пояснение. По сути, ряд действий будут всегда одинаковыми – создание нового документа (за это будет отвечать функция или процедура Create_Doc). Изменяться будут только вызываемые методы.
Программный код на VBScript:
' ---------------------------------------------------------------------------- ' Объект Word Selection - методы ' Пример на языке VBScript - выделение фрагментов Word текста ' Selection-1.vbs ' ---------------------------------------------------------------------------- Option Explicit ' Глобальные переменные dim oWord, oDoc, oSel, i ' Процедура создания нового документа Sub Create_Doc() Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() Set oSel = oWord.Selection oWord.Visible = True End Sub Sub Insert_After_Before() With oSel .Text = "как выделить фрагмент текста " .InsertAfter " ............Конец" .InsertBefore "Начало...... " .EndOf .InsertBreak 6 End With End Sub call Create_Doc call Insert_After_Before
Давайте посмотрим, что данный пример делает. При вызове процедуры Insert_After_Before происходит добавление в документ текстовой строки, далее в конец добавляется фраза » …………Конец», а в начало — «Начало…… «. Потом происходит перевод курсора в конец и добавление перевода строки.
Пример на JScript:
// ---------------------------------------------------------------------------- // Объект Word Selection - методы // Пример на языке JScript - выделение фрагмента в тексте // Selection-1.js // ---------------------------------------------------------------------------- // глобальные переменные var oWord, oDoc, oSel, i function Create_Doc(){ oWord = WScript.CreateObject("Word.Application"); oDoc = oWord.Documents; oDoc.Add(); oSel = oWord.Selection; oWord.Visible = true; } function Insert_After_Before(){ with(oSel){ Text = "как выделить в документе фрагмент текста "; InsertAfter(" ............Конец"); InsertBefore("Начало...... "); EndOf(); InsertBreak(6); } } Create_Doc(); Insert_After_Before();
Для VBA мы просто запускаем редактор кода, добавляем новый модуль и прописываем код, в моем случае имя модуля — Module1:
Sub Module1() ' ---------------------------------------------------------------------------- ' выделение в Word фрагментов текста ' ---------------------------------------------------------------------------- Dim oWord1 As Object, oDoc1 As Object, oSel1 As Object, i Set oWord1 = CreateObject("Word.Application") Set oDoc1 = oWord1.Documents oDoc1.Add Set oSel1 = oWord1.Selection oWord1.Visible = True '*************************************** With oSel1 .Text = "как выделить фрагмент текста " .InsertAfter " ............Конец" .InsertBefore "Начало...... " .EndOf .InsertBreak wdLineBreak End With '*************************************** End Sub
И так, с одной теоретической частью мы закончили и написали программный код, теперь можно приступить к следующей части.
Методы Insert… – выделение фрагментов текста в Word
InsertCaption(Label, Title, TitleAutoText, Position, ExcludeLabel) — Вставляет заголовок сразу после или перед указанным выбором. Обязательным является только параметр Label.
Label – Нумерационный заголовок. Параметр может быть строкой или значением константы WdCaptionLabelID:
- wdCaptionEquation — Уравнение
- wdCaptionFigure — Рисунок
- wdCaptionTable – Таблица
Если метка (Label) не определена, то возникнет ошибка. Для определения метки надо использовать метод Add коллекции CaptionLabels, например:
Applicationd.CaptionLabels.Add Name:="Рисунок"
Title– Заголовок, который будет отображаться справа от метки.
TitleAutoText– Авто-заголовок, перекрывает параметр Title.
Position— Указывает, будет ли вставлен заголовок выше или ниже. Может быть одной из констант WdCaptionPosition:
- wdCaptionPositionAbove — 0 — Метка название добавляется выше.
- wdCaptionPositionBelow — 1 — Метка название добавляется ниже.
ExcludeLabel— TRUE — отключить метку, заданную в параметре Label. FALSE — включить метку. Дополнительно.
Ниже я приведу примеры, что бы не дублировать программный код, я привел только содержимое процедуры Sub Insert_Caption.
' VBScript Sub Insert_Caption() oWord3.CaptionLabels.Add "Номер" For i = 0 To 10 oSel3.InsertCaption "Номер", " как выделять фрагменты текста " & i oSel3.InsertBreak 6 Next End Sub
Тут используется цикл for для вставки нескольких фрагментов — «Урок 6 по VBScript: Циклы for…next и for each…next«.
//JScript function Insert_Caption(){ oWord4.CaptionLabels.Add("Номер"); for (i = 0; i<=10; i++){ oSel4.InsertCaption("Номер", " выделение фрагмента текста " + i); oSel4.InsertBreak(6); } }
Тут тоже используется цикл for, но уже для JS кода — «Урок 9 по JScript — оператор цикла for«.
' VBA oWord5.CaptionLabels.Add "Номер" For i = 0 To 10 oSel5.InsertCaption Label:="Номер", Title:=" Фраза VBA Selection " & i oSel5.InsertBreak wdLineBreak Next
Обратите внимание, чтоимена переменных в примерах отличаются, это пришлось сделать с технических причин – в глазах поисковых систем статья становится заспамленой. Хорошо, давайте двигаться дальше.
Методы Insert… – выделение фрагментов текста в Word
InsertDateTime(DateTimeFormat) – Метод позволяет вставить дату или время в документ, или одновременно оба значения. Помимо параметра DateTimeFormat есть еще четыре, но они практически не используются.
DateTimeFormat – Необязательный параметр, позволяет указать формат даты и времени.
' VBScript Sub Insert_Date With oSel4 .Text = "как выделить фрагмент текста " .EndOf .InsertBreak 6 .InsertDateTime .InsertBreak 6 .InsertDateTime "MMMM dd, yyyy" .InsertBreak 6 .InsertDateTime "MMMM dd, yyyy - H:M:S" End With End Sub
Обратите внимание на оператор with, он позволяет не писать каждый раз имя класса.
//JScript function Insert_Date(){ with(oSel4){ Text = " выделение фрагментов Word текста "; EndOf(); InsertBreak(6); InsertDateTime(); InsertBreak(6); InsertDateTime("MMMM dd, yyyy"); InsertBreak(6); InsertDateTime("MMMM dd, yyyy - H:M:S"); } }
Тут логика работы аналогична.
' VBA With oSel5 .Text = " как выделить в Word фрагмент текста " .EndOf .InsertBreak wdLineBreak .InsertDateTime .InsertBreak wdLineBreak .InsertDateTime "MMMM dd, yyyy" .InsertBreak wdLineBreak .InsertDateTime "MMMM dd, yyyy - H:M:S" End With
Хорошо, осталось рассмотреть последнюю третью часть статьи.
Методы Insert… – выделение фрагментов текста в Word
InsertFile(FileName) – Позволяет вставить содержимое указанного файла в документ, параметр FileName хранит имя или путь к файлу, если путь отсутствует, то будет подразумеваться текущий каталог.
InsertNewPage — Вставляет новую страницу в место, где находится указатель.
InsertParagraph— Заменяет выделение знаком абзаца.
InsertParagraphAfter— Вставляет знак абзаца после выделения .
InsertParagraphBefore— Вставляет новый абзац перед выделением.
Методы с префиксом Move… также встречаются едва ли не в любой программе, связанной с вводом текста в Word. Самые важные и удобные из этих методов:
MoveLeft(), MoveRight(), MoveUp(), MoveDown() – Методы дают возможность переместить курсор влево, вправо, вверх и вниз. Все четыре метода принимают следующие параметры (Unit, Count, Extend), являющиеся необязательными:
Unit — Блок, по которым выбор должен быть перемещен. Параметр Unit содержит значения константы wdUnits.
Count – Единица перемещения. Значение по умолчанию 1.
Extend — Может быть либо wdMove (по умолчанию) или wdExtend.
MoveEnd(), MoveStart() – Перемещение курсора в конец или начало выделения, параметры — Unit, Count.
MoveStartUntil(), MoveStartWhile(), MoveEndUntil(), MoveEndWhile() – Позволяют переместить курсор к заданному символу или последовательности символов. Параметры Cset (обязательный) и Count (дополнительный):
Cset — Один или несколько символов. Аргумент является чувствительным к регистру.
Count – Задает целое или отрицательное значение, на которое происходит перемещение курсора.
Move(Unit, Count) – Фактически, тут мы может указать направление (Count) и текстовую единицу (Unit).
Логика работы для следующих примеров остается та же – меняется только код вызываемой процедуры. Фактически, код для языка VBScript и VBA является идентичным.
' VBScript Sub Get_Move() With oSel6 ' вставляем в документ фразу сто раз For i = 0 To 10 .Text = "как выделить фрагменты нужного текста " ' Перемещаем курсор в конец .EndOf Next For i = 0 To 300 .MoveLeft Next For i = 0 To 100 .MoveRight Next For i = 0 To 4 .MoveUp Next .MoveStartUntil "Word" For i = 0 To 15 .Move 2, 5 Next End With End Sub
Видим, что в данном коде мы использовали несколько операторов for.
//JScript function Get_Move(){ with(oSel6){ for (i=0; i<=10; i++){ .Text = "Текстовая строка: выделение фрагментов текста "; .EndOf(); } for (i=0; i<= 300; i++){ .MoveLeft(); } for (i=0; i<= 100; i++){ .MoveRight(); } for (i=0; i<= 4; i++){ .MoveUp(); } .MoveStartUntil("Word"); for (i=0; i<= 15; i++){ .Move(2, 5); } } }
Обратите внимание на приведенные в самом начале статьи примеры кода для языков VBA и VBScript, в макросе мы можем использовать именованные константы объекта Word, но в теле Windows Script Host сценария нет, так как там они не доступны. Описание свойств класса Selection я рассмотрел в этой статье.
In VBA for Word 2007, I want to be able to open a document, highlight sections of text and replace those sections with fields linked to a docvariables. The process would be:
- Open document.
- Select text.
- Select docvariable from list.
- Insert field linked to selected docvariable.
- Repeat steps 1-4 as required.
There is no way to know beforehand what the text to be selected is or which docvariable is going to be linked to which field or how many times these steps are going to be repeated.
Only with Microsoft could the most absolutely fundamental, simple task of allowing the user to make a selection at run-time and pass this selection back to sub-routine be so tortuous and surreal. I have spent 2 days trying to figure this out. If anyone can help, I will name my next child after you.
asked Apr 2, 2009 at 14:31
1
I think «tortuous and surreal» is a misconception.
Create a small form with a dropdown (named "selVarName"
, for example) that lets you select all document variable names available. Link the form to a custom button in the Quick Access Toolbar.
Upon clicking «OK» in this form do something like this:
Private Sub btnOK_Click()
Dim v As Word.Variable
Dim n As String
n = Me.selVarName.Value
With Selection
For Each v In .Document.Variables
If v.Name = n Then v.Delete: Exit For
Next v
.Document.Variables.Add n, .Range.Text
End With
End Sub
And this has bells and whistles already. You can do additional checking like «no text selected», for example.
answered Apr 2, 2009 at 14:55
TomalakTomalak
330k66 gold badges523 silver badges623 bronze badges
3
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Найти и выделить текст цветом
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 10 ]
1 03.07.2011 18:03:38
- vikky
- рядовой
- Неактивен
- Зарегистрирован: 03.07.2011
- Сообщений: 4
Тема: Найти и выделить текст цветом
Как можно найти текст и выделить его определенным цветом?
Запускаю «Поиск», задаю текст, нажимаю «Выделение при чтении» — «Выжелить все», текст выделяется, но потом цвет слетает, а мне надо его сохранить.
Можно конечно через кнопку «найти в основном документе», фрагмент выделяется по всему тексту и щелкаю по палитре. Но при этом, если текст большой, то при нажатии на кнопку я улетаю на другую страницу и потом приходится искать слово с которого начинался поиск, а это очень не удобно.
2 Ответ от Nikodim 04.07.2011 09:10:05
- Nikodim
- майор
- Неактивен
- Зарегистрирован: 27.06.2011
- Сообщений: 87
- Поблагодарили: 21
- За сообщение: 1
Re: Найти и выделить текст цветом
перед началом поиска разделите окно документа пополам (окно -> разделить)
в верхнем окне ищите слово, с которого нужно начать поиск.
после щелкаете курсором в нижнее окно, и поиск производите уже из него через кнопку «найти в основном документе». текст выделяется, щелкаете по палитре. при этом выделение происходит и в верхнем и в нижнем окне.
убрать разделение окна: окно -> снять разделение.
можно разделить окно и не заходя в панель инструментов, просто щелкнув два раза ЛКМ в правом верхнем углу листа над полосой вертикальной линейки
3 Ответ от vikky 04.07.2011 19:12:09
- vikky
- рядовой
- Неактивен
- Зарегистрирован: 03.07.2011
- Сообщений: 4
Re: Найти и выделить текст цветом
Nikodim пишет:
окно -> разделить
Спасибо:) Ваш совет помог:)
4 Ответ от Настаев 15.07.2011 00:54:27
- Настаев
- подполковник
- Неактивен
- Зарегистрирован: 14.07.2011
- Сообщений: 176
- Поблагодарили: 54
Re: Найти и выделить текст цветом
Могу предложить решение с помощью макроса
5 Ответ от vikky 16.07.2011 16:35:46
- vikky
- рядовой
- Неактивен
- Зарегистрирован: 03.07.2011
- Сообщений: 4
Re: Найти и выделить текст цветом
Настаев пишет:
Могу предложить решение с помощью макроса
буду благодарна
6 Ответ от Настаев 16.07.2011 17:01:22
- Настаев
- подполковник
- Неактивен
- Зарегистрирован: 14.07.2011
- Сообщений: 176
- Поблагодарили: 54
Re: Найти и выделить текст цветом
Sub Покрасить_с_подстановочными_знаками(ByVal что As String)
'Запуская этот макрос из другого макроса, ему можно передать атрибут "что". Это очень удобно для поиска и замены разных слов и словосочетаний.
'сбить выделение, чтобы макрос распространялся на весь документ
Application.Selection.MoveLeft(Unit:=WdUnits.wdCharacter, Count:=1)
'очистить формат поиска и замены
Application.Selection.Find.ClearFormatting()
Application.Selection.Find.Replacement.ClearFormatting()
'настроить формат замены (используестя последний использованный цвет подсветки)
Application.Selection.Find.Replacement.Highlight = True
'параметры поиска
With Application.Selection.Find
.Text = что
.Replacement.Text = "" 'в данном случае текст не будет удаляться или заменяться ничем. К нему будет применён формат поиска
.Forward = True '
.Wrap = WdFindWrap.wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
'выполнить
Application.Selection.Find.Execute(Replace:=WdReplace.wdReplaceAll)
End Sub
7 Ответ от Framell 16.07.2011 17:27:43
- Framell
- сержант
- Неактивен
- Откуда: Москва, Россия
- Зарегистрирован: 11.03.2011
- Сообщений: 27
- Поблагодарили: 3
Re: Найти и выделить текст цветом
vikky пишет:
Как можно найти текст и выделить его определенным цветом?
Для таких целей используется команда Заменить (Replace), в которой нужно указать поиск и замену по формату (кнопка Формат в диалоговом окне)
В нашей стране чтобы быть бедным надо очень долго и хорошо учиться.
8 Ответ от Настаев 16.07.2011 17:59:12
- Настаев
- подполковник
- Неактивен
- Зарегистрирован: 14.07.2011
- Сообщений: 176
- Поблагодарили: 54
Re: Найти и выделить текст цветом
Напишите рядом с этим макросом другой макрос для его запуска с атрибутом искомого текста (то, чтобы вы писали в дислоговом окне «Найти»)
Например:
Sub Подсветка
'подсветка скобок
Покрасить_с_подстановочными_знаками("[()]") 'в кавычках передаётся строковый параметр - искомый текст
'подсветка знака номер
Покрасить_с_подстановочными_знаками("№")
End sub
Запустив макрос «Подсветка» вы получите подсвеченные скобки и знак № во всём документе
Думаю, нетрудно сделать другой похожий макрос, только для подсветки без подстановочных знаков.
Лучше этого способа Вы не найдёте. Только не забудьте самом первом макросе (тот, который будет запускаться первым) вписать строку «Application.ScreenUpdating = false». Это действие отключит смену экрана пока будет выполнятся работа VBA. Иначе макросы выполняются долго.
9 Ответ от vikky 22.07.2011 17:34:34
- vikky
- рядовой
- Неактивен
- Зарегистрирован: 03.07.2011
- Сообщений: 4
Re: Найти и выделить текст цветом
А можно создать макрос по следующей схеме?
Есть большой документ, в нем много номеров телефонов, необходимо сделать выборку.
Найти текст не выделенный цветом «89*********» или «8_9*********» (где * — какая-то цифра).
Запомнить.
Найти этот текст по всему документу.
Если одинаковых объектов больше 3, то выделить одним цветом, если меньше или равно трем, то выделить другим цветом.
Повторять условие пока ничего не найдет. В конце все телефоны станут раскрашены в два цвета.
10 Ответ от Настаев 29.07.2011 14:53:12
- Настаев
- подполковник
- Неактивен
- Зарегистрирован: 14.07.2011
- Сообщений: 176
- Поблагодарили: 54
Re: Найти и выделить текст цветом
Это можно. Но удобнее использовать базу данных для таких выборок.
Если же Вы хотите поиграться с этим, могу дать макрос, который я однажды написал, отвечая на подобную тему. Он ищет слова в тексте, которые встречаются в каждом предложении документа. Поняв основные принципы, Вы сможете сами написать нужный Вам макрос.
Sub Одинаковые_слова()
Dim j As Object
'отключение смены экрана (чтобы не моргало во время выполнения макроса)
Application.ScreenUpdating = False
'для каждого слов в тексте
For Each j In ActiveDocument.Words
'если слово есть во всех предложениях
If проверка(j.Text) Then
'сделать красным
j.Font.Color = WdColor.wdColorDarkRed
End If
Next
'сообщить о завершении выполнения
MsgBox "Готово"
End Sub
Function проверка(ByRef слово As String) As Boolean
Dim j As Object
'для каждого предложения в тексте
For Each j In ActiveDocument.Sentences
'если слова нет в этом предложении (учитывается регистр)
If InStr(j, слово) = 0 Then
'выход из функции (будет возвращён отрицательный результат)
Exit Function
End If
Next j
'возврат положительного результата
проверка = True
End Function
Сообщений [ 10 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Похожие темы
- Выделить текст, но не печатать выделение
- Как научить ворд выделять цветом ключевые слова и текст после //
- Выделить текст, имеющий такой же формат
- Необх-мо найти выделенный текст и подчеркнуть
- Поиск выделенных цветом слов
- Лжевыделение цветом текста, скопированного из Блокнота.
- Автоматическое выделение цветом строк таблицы
- Одновременное выделение цветом разных слов.
Найти и выделить текст цветом
Многие применяют для работы с текстом редактор Microsoft Word. Рано или поздно у пользователей этой программы возникают разные вопросы. Наш сайт о Microsoft Office Word даст ответ про: как сделать автообновление полей?.
До недавнего времени информацию в сети было найти затруднительно, так как она разбросана по разным ресурсам и форумам. Наш сайт о Microsoft Office Word даст ответ про: оформление документа в текстовом редакторе ms word.
Но вот наконец появился форум, на котором вся информация по работе с Microsoft Word собрана воедино. Наш сайт о Microsoft Office Word даст ответ про: установить шрифт по умолчанию word 2007.
Форум Ворд Эксперт предназначен для русскоязычных пользователей, интерфейс интуитивно понятен, а регистрация быстра и легка. Наш сайт о Microsoft Office Word даст ответ про: программа не работает возникшая проблема привела к прекращению работы программы.
На форуме можно задать вопрос о настройках, форматированию и редактированию документов, узнать все о шаблонах, полях и макросах. Наш сайт о Microsoft Office Word даст ответ про: как перевести из ворд 2010 в 2003.
И даже найти готовые макросы и инструкции по их созданию своими руками. Если же вы захотите, то можно оставить заявку на написание макроса в соответствующем разделе сайта. Наш сайт о Microsoft Office Word даст ответ про: как сделать в ворде шрифт вниз.
При любых сложностях в работе с программой, разработке шаблонов, создании таблиц или редактировании текста вы можете задать вопрос на форуме. Наш сайт о Microsoft Office Word даст ответ про: выделенный фрагмент заблокирован.
Обязательно указывайте, какой версией редактора вы пользуетесь. Можно сделать это в подписи. Также на сайте можно найти ссылки с полезной информацией по Microsoft Word и различную литературу, готовые решения и советы по оптимизации работы с редактором. Наш сайт о Microsoft Office Word даст ответ про: антонимы онлайн словарь.