Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 1 / 1
Регистрация: 28.06.2011
Сообщений: 65
1

В документе Word найти определенные фразы и сделать их "жирными"

18.08.2015, 16:36. Показов 5160. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задача: в документе msword найти определенные фразы и сделать их "жирным".
Поиск фраз можно реализовать с помощью
C#
1
2
3
find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing,
                ref replaceAll, ref missing, ref missing, ref missing, ref missing)
А вот как найденные слова выделить "жирным" в тексте не могу сообразить, подскажите кто знает. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2015, 16:36
Ответы с готовыми решениями:

Найти определенные текст в документе Word и передать в Excel
Здравствуйте уважаемые эксперты . нужно найти определенные текст в документе Word и передать в...

Как можно получить или найти в документе на Word определённые данные?
У меня вопрос: Как можно получить или найти в документе на Word определённые данные. Например: в...

Определенные элементы в документе Word: необходимо их пронумеровать по порядку, от первого к последнему
есть макрос, который ищет определенные элементы в документе Word, необходимо их пронумеровать по...

Найти определенные фразы в файле и посчитать их долю в общем количестве фраз
Есть файл (выгруженный лог запросов): https://yadi.sk/d/A-98NjcA3TktXp 1. Необходимо вывести все...

9
Джоуи
1081 / 643 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
18.08.2015, 18:36 2
У объекта Selection есть Font, а у него есть Bold, которое надо выставить в true. Естественно, нужный текст при этом должен быть выделен (в selectione должна быть какая-то область)
C#
1
Font.Bold = true;
1
0 / 1 / 1
Регистрация: 28.06.2011
Сообщений: 65
18.08.2015, 21:42  [ТС] 3
Отлично, сработал вот этот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void SelectionFind()
        {
            object findText = "текст";
 
            app.Selection.Find.ClearFormatting();
 
            if (app.Selection.Find.Execute(ref findText,
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing))
            {
                Word.Selection wrdSelection;
                wrdSelection = app.Selection;
                wrdSelection.Font.Bold = 1;
            }
            else
            {
     
            }
        }
вот только он выделяет первое найденное слово, а как выделить по всему документу?
0
Джоуи
1081 / 643 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
18.08.2015, 21:46 4
Думаю, можно забить
C#
1
app.Selection.Find.Execute(ref findText, ref missing
в цикл for, и поставить
C#
1
2
3
Word.Selection wrdSelection;
                wrdSelection = app.Selection;
                wrdSelection.Font.Bold = 1;
0
0 / 1 / 1
Регистрация: 28.06.2011
Сообщений: 65
18.08.2015, 21:59  [ТС] 5
Вот есть отличный метод поиска и замены слов во всем документе
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void FindReplace(string str_old, string str_new) // Метод поиска и замены слов
        {
            Word.Find find = app.Selection.Find;
 
            find.Text = str_old; // Текст поиска
            find.Replacement.Text = str_new; // Текст замены
 
            find.Execute(FindText: Type.Missing, MatchCase: false, MatchWholeWord: false, MatchWildcards: false,
                        MatchSoundsLike: missing, MatchAllWordForms: false, Forward: true, Wrap: Word.WdFindWrap.wdFindContinue,
                        Format: false, ReplaceWith: missing, Replace: Word.WdReplace.wdReplaceAll);
 
            find.Replacement.Text = null;  
        }
Вот бы по аналогии как бы сделать...неполучается
0
Джоуи
1081 / 643 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
18.08.2015, 23:39 6
C#
1
2
3
4
5
6
7
8
9
10
  private void FindSetBold(string str_)
        {
            Word.Find find = app.Selection.Find;
            find.Text = str_;
            find.Execute(FindText: Type.Missing, MatchCase: false, MatchWholeWord: false, MatchWildcards: false,
                        MatchSoundsLike: missing, MatchAllWordForms: false, Forward: true, Wrap: Word.WdFindWrap.wdFindContinue,
                        Format: false);
 
            app.Selection.Font.Bold = 1;  
        }
Попробуй такой метод, но я не уверен, поэтому попробуй еще так (урезанный предыдущий метод):
C#
1
2
3
4
5
6
7
8
  private void FindSetBold(string str_)
        {
            Word.Find find = app.Selection.Find;
            find.Text = str_;
            find.Forward = true;
            find.Execute; 
            app.Selection.Font.Bold = 1;  
        }
Добавлено через 1 минуту
Вроде должно сработать. Отпишись о своем результате

Добавлено через 3 минуты
и еще добавь проверку:
C#
1
2
3
4
5
6
7
private void FindSetBold(string str_)
        {
            Word.Find find = app.Selection.Find;
            find.Text = str_;
            find.Forward = true;
           if find.Execute {app.Selection.Font.Bold = 1;}
        }
0
0 / 1 / 1
Регистрация: 28.06.2011
Сообщений: 65
19.08.2015, 08:45  [ТС] 7
Первый код работает, но тоже выделяет только первое найденное слово.
Второй код выдает ошибку на
C#
1
find.Execute
В качестве оператора могут использоваться только выражения присваивания, вызова, инкремента, декремента и создания нового объекта
А третий код выделяет
C#
1
find.Execute
и
{}
что то не нравятся, пробовал на
()
менять, не помогает, еще на
;
тоже ругается.

Добавлено через 6 минут
вот так без ошибок
C#
1
2
3
4
5
6
7
private void FindSetBold(string str_)
        {
            Word.Find find = app.Selection.Find;
            find.Text = str_;
            find.Forward = true;
           find.Execute (app.Selection.Font.Bold = 1);
        }
но не работает
0
Джоуи
1081 / 643 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
20.08.2015, 18:57 8
Это же процедура, выполни ее столько раз, сколько надо. Например, какое у тебя там слово, "missing"? сделай примерно так:
C#
1
2
  for (int j = 0; j <= 10; j++) /*здесь вместо десятки поставь такое число, которое соответствует количеству слов "missing" в твоем документе минус 1*/
FindSetBold("missing")
0
0 / 1 / 1
Регистрация: 28.06.2011
Сообщений: 65
20.08.2015, 20:41  [ТС] 9
Не известно сколько слов, фраз в документе, может 100, может 7, а может вообще не быть. Цикл со счетчиком, я считаю, не совсем корректным в данном вопросе.
Идея понятная, не знаю как реализовать.
Ищем слово (фразу), выделяем ее, затем применяем Bold и ищем далее. В MS Word же это есть, как вот только в C# данный механизм реализовать?
0
Джоуи
1081 / 643 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
20.08.2015, 21:59 10
Для выяснения количества слов сделай так: поставь счетчик repeat .. while FindSetBold("missing"), не важно, что у тебя стоит в repeat, пусть делает какое-нибудь пустое дело, например повышает любую переменную на один. Этот цикл повторится столько раз, сколько у тебя таких слов в документе.

Если ты даже это не сможешь реализовать, извини, у меня нет времени весь код за тебя писать, попроси модераторов, они может помогут. Тут все оч просто
0
20.08.2015, 21:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2015, 21:59
Помогаю со студенческими работами здесь

как сделать ссылку на текст в документе word
Добрый день! По аналогии с Excel хочу сделать ссылку на текст в одном и том же документе. Т.е....

Оставить определенные фразы из файла
Дан файл, содержащий некоторый текст. Оставить в этом файле только те фразы, в которых имеются...

Найти слово в документе MS Word
Ребята помогите, надо написать прогу которая ищет слово в word и надо знать на каких страницах это...

Как найти слово в документе Word
Народ Подскажите плиз как можно в документе Word отыскать слово и скажем заменить его другим или...

Как числа или текст которые вводятся сделать жирными?
Как числа или текст которые вводятся сделать жирными?

Найти самое длинное предложение в документе (Word)
Доброго времени суток!!! Подскажите пожалуйста, как в документе найти самое длинное предложение....

Найти слово в документе MS Word и выделить его
Всем хай =) возникла такая проблема , нужно программно выделить слово в office word , чтоб вы...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru