Vba выделить текст жирным в word

ulugbek tulakov

-4 / 0 / 0

Регистрация: 21.04.2021

Сообщений: 157

1

27.11.2022, 19:27. Показов 628. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый вечер. Нужна помощь.
У меня много текста
надо выделить жирным шрифтом первую строку абзаца.
Вот я нашел в инете макрос — он выделить жирным шрифтом первую строку абзаца до точки
а у меня первая строка абзаца заканчивается :, ?, ; и другими знаками

как можно именит код макроса

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Test()
Dim p As Paragraph
Dim idx As Integer
Dim i As Integer
For Each p In ActiveDocument.Paragraphs
 
With p.Range
    idx = InStr(1, .Text, ".", vbTextCompare)
    If idx > 0 Then
        For i = 1 To idx
            .Characters(i).Bold = True
        Next i
    End If
End With
 
Next p
End Sub



0



Zeag

810 / 465 / 180

Регистрация: 09.03.2009

Сообщений: 1,577

27.11.2022, 20:02

2

Ну как вариант:

Visual Basic
1
2
3
4
5
6
7
8
9
Dim idx1 As Integer, idx2 As Integer, idx3 As Integer, idx4 As Integer
idx1 = InStr(1, .Text, ":", vbTextCompare)
idx2 = InStr(1, .Text, "?", vbTextCompare)
idx3 = InStr(1, .Text, ":", vbTextCompare)
idx4 = InStr(1, .Text, ".", vbTextCompare)
idx = IIf(idx1 <= idx2, idx1, idx2)
idx = IIf(idx3 <= idx, idx3, idx)
idx = IIf(idx4 <= idx, idx4, idx)
' и далее по тексту

То есть ищем позиции двоеточия, вопроса, точки с запятой и точки, из них берем наименьшую и до нее делаем жирным.
Но это только вариант, ибо фраза может быть как у Льва Толстого — длинная и с этими знаками, так что, возможно, лучше взять и закрасить от ThisDocument.Sentences(1).Start до ThisDocument.Sentences(1).End (это для случая первого предложения документа).



0



Модератор

Эксперт MS Access

11341 / 4660 / 748

Регистрация: 07.08.2010

Сообщений: 13,497

Записей в блоге: 4

27.11.2022, 20:39

3

Цитата
Сообщение от ulugbek tulakov
Посмотреть сообщение

For Each p In ActiveDocument.Paragraphs

к сожалению параграфы в реальном/типовом документе бывают разные
— заголовки
— списки
— основной текст
— текст в таблицах

какие строки/линии надо обрабатывать
чем ваш документ отличается от типового

Миниатюры

Как выделить жирным шрифтом первую строку абзаца в word с VBA
 



0



Модератор

Эксперт MS Access

11341 / 4660 / 748

Регистрация: 07.08.2010

Сообщений: 13,497

Записей в блоге: 4

27.11.2022, 21:07

4

применила цвет вместо жирности(для наглядности)

Миниатюры

Как выделить жирным шрифтом первую строку абзаца в word с VBA
 



0



Модератор

Эксперт MS Access

11341 / 4660 / 748

Регистрация: 07.08.2010

Сообщений: 13,497

Записей в блоге: 4

27.11.2022, 21:25

5

проверила на несколько листов
— отключила таблицу
— но неверно формирует 3-й лист(желтая полоса должна быть с черным шрифтом)

Миниатюры

Как выделить жирным шрифтом первую строку абзаца в word с VBA
 



0



-4 / 0 / 0

Регистрация: 21.04.2021

Сообщений: 157

28.11.2022, 19:15

 [ТС]

6

Цитата
Сообщение от Zeag
Посмотреть сообщение

Ну как вариант:

Здраствуйте можно написат код от начало до конца. Я с этим не разбиралься.
Я выложу пример в файле. В этом файле первые абзацы должно быть жирным



0



489 / 252 / 97

Регистрация: 04.11.2022

Сообщений: 378

28.11.2022, 23:33

7

ulugbek tulakov, можно сделать без макроса. То, что Вы называете абзацем, на самом деле блоки из нескольких абзацев, разделенные пустым абзацем. Поэтому вызываем диалог «Найти и заменить», Найти:
^13^13*^13
, Больше>> — Подстановочные знаки, Заменить на: поставьте курсор, но ничего не пишите, Формат — Шрифт — Полужирный. Заменить все.

Миниатюры

Как выделить жирным шрифтом первую строку абзаца в word с VBA
 



0



Vigilant Mole

489 / 252 / 97

Регистрация: 04.11.2022

Сообщений: 378

28.11.2022, 23:48

8

При этом, конечно, символы конца абзаца у последнего абзаца блока и пустого абзаца станут полужирными, хотя этого не видно. Можно вернуть им нормальную толщину, сделав замену
^13^13
на пустое поле с форматом «обычный».
Макрос от макрорекордера

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Sub Макрос1()
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  Selection.Find.Replacement.Font.Bold = True
  With Selection.Find
    .Text = "^13^13*^13"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find.Replacement.Font
    .Bold = False
    .Italic = False
  End With
  With Selection.Find
    .Text = "^13^13"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub



1



-4 / 0 / 0

Регистрация: 21.04.2021

Сообщений: 157

29.11.2022, 05:05

 [ТС]

9

Цитата
Сообщение от Vigilant Mole
Посмотреть сообщение

При этом, конечно, символы конца абзаца у последнего абзаца блока и пустого абзаца станут полужирными, хотя этого не видно. Можно вернуть им нормальную толщину, сделав замену
^13^13
на пустое поле с форматом «обычный».
Макрос от макрорекордера

Добрый утро. Спасибо. Можно это сделат в найти и заменит.

Добавлено через 8 минут

Цитата
Сообщение от ulugbek tulakov
Посмотреть сообщение

Добрый утро. Спасибо. Можно это сделат в найти и заменит.

Все я уже понял.



0



I make a several page word document every week. I copy text from a PDF and paste it into a word document, I then format the text that I pasted.

This takes a long time and i would like to automate it.

I need a macro or some code to select specific text, then make that text bold. The specific text i need to bold is what i call a scrap code.

There are 60 different codes. For example «FIPS», or «LILL».

0m3r's user avatar

0m3r

12.2k15 gold badges33 silver badges70 bronze badges

asked Dec 16, 2010 at 2:51

Aaron's user avatar

Something like this:

Sub A()
'
' a Macro
'
'
Dim A(3) As String

A(1) = "code1"
A(2) = "code2"
A(3) = "code3"

For i = 1 To 3
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
       .Forward = True
       .Wrap = wdFindStop
       .Format = False
       .MatchCase = False
       .MatchWholeWord = False
       .MatchWildcards = False
       .MatchSoundsLike = False
       .MatchAllWordForms = False
       .Replacement.Font.Bold = True

       .Execute FindText:=A(i), ReplaceWith:=A(i), Format:=True, _
         Replace:=wdReplaceAll

    End With
Next i
End Sub  

HTH!

Edit

To switch dollar amounts to bold

Sub a()
'
' a Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Bold = True
    With Selection.Find
        .Text = "$([0-9.,]{1,})"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

answered Dec 16, 2010 at 7:26

Dr. belisarius's user avatar

Dr. belisariusDr. belisarius

60.4k15 gold badges114 silver badges190 bronze badges

3

I would suggest recording a macro.
Then do all the modifications and formatting.
Finally, look at the code of the macro and see how it did it.

The one thing you need to figure out is how you logically want to locate the text you want to bold.
Is it a specific line? Is it at the beginning of a known word?

Once you have that answered, you can combine it with the code of the macro and automate the task.

answered Dec 16, 2010 at 3:02

BeemerGuy's user avatar

BeemerGuyBeemerGuy

8,1192 gold badges35 silver badges46 bronze badges

1

I’m creating a word document programatically using VBA.

1) I have a a string with value — «Strategy». I want to make it bold and to be displayed in the word document.

I have tried this below, but the text is never changed:

Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")

Dim strategy As String
strategy = "STRATEGY"
Dim objWdRange As Word.Range


wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("C:Program FilesDailyStrategy.doc")


With wrdDoc
    If wrdDoc.Bookmarks.Exists("MarketCommentry") Then
        wrdDoc.Bookmarks("MarketCommentry").Range.Text =  strategy 

    Set objWdRange = wrdDoc.Content
     With objWdRange.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "STRATEGY"

        'Make found bold and italic
        With .Replacement.Font
            .Bold = True
            .Italic = True
        End With
        .Execute Replace:=wdReplaceAll
    End With
End With

End If
regards

Kojo

asked Jan 7, 2010 at 11:50

Kojof's user avatar

KojofKojof

4197 gold badges15 silver badges23 bronze badges

EDIT:: I should have better tried in the VBA debugger first, which I did now. This one should work:

With wrdDoc
   Set objWdRange = wrdDoc.Content
    With objWdRange.Find
       .ClearFormatting
       .Text = "STRATEGY"
       .Execute Replace:=wdReplaceNone
   End With
End With

If objWdRange.Find.Found Then
  'Make found bold and italic
  With objWdRange.Font
       .Bold = True
      .Italic = True
  End With
End If

answered Jan 7, 2010 at 12:00

Doc Brown's user avatar

Doc BrownDoc Brown

19.6k7 gold badges52 silver badges88 bronze badges

5

Я пытаюсь экспортировать документ Word из программы Visual Basic. Разным частям документа потребуется разное форматирование.

У меня несколько абзацев, и мне нужно выделить только части каждого из них. Я пытаюсь установить диапазон внутри каждого абзаца, который должен быть выделен жирным шрифтом, но, что бы я ни делал, мне кажется, что он только хочет выделить полужирным шрифтом весь абзац.

Я хочу сделать что-то вроде этого:

Dim Para1 As Word.Paragraph
Para1 = WordDoc.Content.Paragraphs.Add
Para1.Range.Start = 1
Para1.Range.End = 14
Para1.Range.Font.Bold = True
Para1.Range.Text = "Job number is: " + myJobID

… чтобы он выделялся жирным шрифтом от ‘J’ до ‘:’ (в Para1.Range.Text), но не выделял жирным шрифтом myJobID (который является переменной, которую я получаю от пользователя). Однако, что бы я ни делал, весь абзац, включая myJobID, выделяется жирным шрифтом.

Я также попытался создать переменную Range, которая устанавливает диапазон на основе всего документа, но проблема в том, что длины нескольких переменных, которые я выводю в документ Word, будут разных размеров, и, следовательно, нет способ узнать, где будет начинаться следующий раздел, который я хочу выделить жирным шрифтом. В общем, я должен работать с объектом Paragraph, а не перебирать все символы во всем документе.

Надеюсь, это имело смысл. Любые идеи?

Если в вашем файле Word есть несколько текстов с прогнозом, теперь вам нужно отформатировать все тексты с прогнозом как полужирный. Как можно как можно быстрее выделить все вхождения одного и того же слова в большом документе Word?

Жирным шрифтом все экземпляры одного и того же слова в документе Word с кодом VBA


Жирным шрифтом все экземпляры одного и того же слова в документе Word с кодом VBA

Следующий код VBA может помочь вам быстро и легко выделить все экземпляры определенного слова жирным шрифтом. Сделайте следующее:

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. А затем нажмите Вставить > Модули, скопируйте и вставьте приведенный ниже код в открытый пустой модуль:

Код VBA: жирным шрифтом все экземпляры одного и того же слова

Sub BoldAll()
    Dim xStr As String
    xStr = InputBox("Please enter the word that you want to bold:", "KuTools for Word")
    If Trim(xStr) = "" Then
        MsgBox "Cann’t be empty!", vbInformation, "KuTools for Word"
    End If
    With ActiveDocument.Content.Find
        .ClearFormatting
        .Text = xStr
        .Replacement.ClearFormatting
        .Replacement.Font.Bold = True
        .Replacement.Text = "^&"
        .Wrap = wdFindStop
        .Format = True
        .Forward = True
        .Execute Replace:=wdReplaceAll
    End With
End Sub

3. После ввода кода, а затем нажмите F5 нажмите клавишу, чтобы запустить его, и появится диалоговое окно, напоминающее вам о вставке слова, которое вы хотите выделить полужирным шрифтом, см. снимок экрана:

doc жирным шрифтом конкретное слово 1

4. А затем нажмите OK кнопку, и все конкретные слова сразу выделены жирным шрифтом.


Рекомендуемые инструменты для повышения производительности Word

выстрел kutools word kutools tab 1180x121

выстрел kutools word kutools plus tab 1180x120

Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени

  • Сложные и повторяющиеся операции можно производить разово за секунды.
  • Вставляйте сразу несколько изображений из папок в документ Word.
  • Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
  • Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
  • Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.

Комментарии (3)


Оценок пока нет. Оцените первым!

Like this post? Please share to your friends:
  • Vba выделение строк в word
  • Vba word элемент управления содержимым
  • Vba вывод в таблицу excel
  • Vba word ширина столбца таблицы
  • Vba вывод в word