Найти абзацы word vba

0 / 0 / 0

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

Сообщений: 6

1

29.12.2010, 15:07. Показов 3159. Ответов 6


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

Помогите пожалуйста! На РГЗ задание последнее надо сделать, а я не знаю как. VBA не шарю, если б на С++ ещё ладно. а вот VBA…
В общем стремное такое: «Написати програму, що в документі MS Word знаходить абзац з найбільшою кількістю речень, змінює колір шрифту тексту знайденого абзацу на червоний та наприкінці документу виводить по-відомлення про номер знайденого абзацу та про кількість речень в ньому.»



0



исследователь

325 / 104 / 3

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

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

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

29.12.2010, 16:31

2

речення это что?
переведите



0



Busine2009

Заблокирован

29.12.2010, 18:18

3

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub m_1()
Dim vКоличество As Integer
Dim max As Integer
Dim vНомерАбзаца As Integer
Dim i As Integer
max = ActiveDocument.Paragraphs(1).Range.Sentences.Count
vНомерАбзаца = 1
For i = 1 To ActiveDocument.Paragraphs.Count
   If ActiveDocument.Paragraphs(i).Range.Sentences.Count > max Then
        max = ActiveDocument.Paragraphs(i).Range.Sentences.Count
        vНомерАбзаца = i
   End If
Next i
ActiveDocument.Paragraphs(vНомерАбзаца).Range.Font.Color = wdColorRed
MsgBox "Самый длинный абзац " & vНомерАбзаца & "." & _
    " В нём " & max & " предложений."
End Sub



1



0 / 0 / 0

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

Сообщений: 6

30.12.2010, 00:08

 [ТС]

4

фух. спасибо ОГРОМНОЕ ОГРОМНОЕ!!!
речення — это предложение)

Добавлено через 52 минуты
А можно ещё одну, друг зарегиться не может. Таже ситуация с VBA.
Написати програму, що в заданому користувачем абзаці документу MS Word обчислює кількість букв «а» та наприкінці документа (або після абзацу, у якому відбувався підрахунок) виводить повідомлення про кількість букв.



0



Busine2009

Заблокирован

30.12.2010, 00:29

5

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
Sub m_1()
Dim vInputbox As Integer
vInputbox = Val(InputBox("Введите номер абзаца, который нужно проанализировать"))
ActiveDocument.Paragraphs(vInputbox).Range.InsertAfter _
    "Количество буквы а в заданном абзаце " & _
    Len(ActiveDocument.Paragraphs(vInputbox).Range) - _
    Len(Replace(LCase(ActiveDocument.Paragraphs(vInputbox).Range), "а", "")) & "." & Chr(13)
End Sub



1



0 / 0 / 0

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

Сообщений: 6

30.12.2010, 00:45

 [ТС]

6

Ещё раз большое спасибо!



0



1508 / 478 / 56

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

Сообщений: 8,008

30.12.2010, 14:01

7

Интернацинал, скоро на казахском напишут



0



I have a VBA macro in Microsoft Word 2007 that finds all tables in my document with a particular background shade color and then deletes that table. That part works fine.

But, in addition to needing to delete the table, I also need to delete the paragraph that follows it. The paragraph that ALWAYS follows is of style «Macro Text» with no text in it. It is there simply to «break up the tables» from each other so that they don’t combine into one large table.

How would I do this? Following is my code for deleting the tables:

For Each aTable In ActiveDocument.Tables
    If aTable.Rows(1).Cells(2).Shading.BackgroundPatternColor = wdColorGray15 Then
        aTable.Delete
    End If
Next aTable

Martijn Pieters's user avatar

asked Oct 11, 2013 at 23:08

Grandpa Mojo's user avatar

At its simplest I think you need something like this. You may need to extend the range to include the entire paragraph, check the style name etc.

Dim aTable As Word.Table
Dim rng As Word.Range
For Each aTable In ActiveDocument.Tables
If aTable.Rows(1).Cells(2).Shading.BackgroundPatternColor = wdColorGray15 Then
  Set rng = aTable.Range
  rng.Move unit:=wdParagraph, Count:=1
  aTable.Delete
  rng.Delete
  Set rng = Nothing
End If
Next aTable

answered Oct 13, 2013 at 9:58

1

THANKS bibadia! You saved me!
Correct answer (for finding grey text in either column of two column tables in ALL tables and then deleting those tables):

Dim aTable As Word.Table
Dim rng As Word.Range
For Each aTable In ActiveDocument.Tables
If aTable.Shading.BackgroundPatternColor = wdColorGray15 Then
    Set rng = aTable.Range
    rng.Move unit:=wdParagraph, Count:=1
    aTable.Delete
    rng.Delete
    Set rng = Nothing
Else
    If aTable.Rows(1).Cells(2).Shading.BackgroundPatternColor = wdColorGray15 Then
        Set rng = aTable.Range
        rng.Move unit:=wdParagraph, Count:=1
        aTable.Delete
        rng.Delete
        Set rng = Nothing
    End If
End If
Next aTable

answered Oct 15, 2013 at 15:28

Grandpa Mojo's user avatar

Sub Макрос()

    Dim rng As Range, Found(1 To 3) As Boolean
    Dim var, i As Long

            ‘1. Отключение монитора (может это ускорит макрос и не будет мерцать).
    Application.ScreenUpdating = False

        ‘2. Поиск в основной части файла.
    MyFind ActiveDocument.Range(0, 0), Found(1)

        ‘2. Поиск в страничных сносках.
    If ActiveDocument.Footnotes.Count <> 0 Then
        Set rng = ActiveDocument.StoryRanges(wdFootnotesStory)
        rng.Collapse Direction:=wdCollapseStart
        MyFind rng, Found(2)
    End If

        ‘3. Поиск в концевых сносках.
    If ActiveDocument.Endnotes.Count <> 0 Then
        Set rng = ActiveDocument.StoryRanges(wdEndnotesStory)
        rng.Collapse Direction:=wdCollapseStart
        MyFind rng, Found(3)
    End If

        ‘4. Включение монитора.
    Application.ScreenUpdating = True

        ‘5. Сообщение.
    If Found(1) = True Then
        var = «в основном тексте» & vbCr
    End If
    If Found(2) = True Then
        var = var & «в страничных сносках» & vbCr
    End If
    If Found(3) = True Then
        var = var & «в концевых сносках»
    End If
    If var <> «» Then
        MsgBox «Найдено здесь:» & vbCr & vbCr & var, vbInformation
    Else
        MsgBox «Не найдено.», vbInformation
    End If

    End Sub

Sub MyFind(find_rng As Range, Found As Boolean)

        Dim find As find

            ‘1. Создание объекта для поиска.
    Set find = find_rng.find

        ‘2. Настройка поиска.
    find.text = «@mail.ru»
    find.Wrap = wdFindStop

        ‘3. Поиск и замена.
    Do While find.Execute = True
        ‘ Закраска абзаца.
        find_rng.Paragraphs(1).Range.Shading.BackgroundPatternColor = 65535
        ‘ Смещение невидимого курсора вправо от найденного абзаца, чтобы поиск
            ‘ начался после найденного абзаца, а не в найденном фрагменте.
        find_rng.SetRange find_rng.Paragraphs(1).Range.End, find_rng.Paragraphs(1).Range.End
        ‘ Пометка, что было найдено.
        Found = True
    Loop

    End Sub

[свернуть]

Добрый день.
Как в VBA Word достать номера абзацов? (отмечено красным на скрине)
У меня есть код, который обрабатывает таблицы в Word’e и берёт последний абзац перед каждой таблицей. Есть необходимость достать номер тоже.
Код:

Код
Sub KPI()
Dim wd As New Document
Set wd = ActiveDocument
tc = wd.Tables.Count
ReDim mas(1 To tc, 1 To 10)
For i = 1 To tc
    If i = 1 Then
        Set ps = wd.Range(0, wd.Tables(1).Range.Start - 1).Paragraphs
    Else
        Set ps = wd.Range(wd.Tables(i - 1).Range.End, wd.Tables(i).Range.Start - 1).Paragraphs
    End If
    For lp = ps.Count To 1 Step -1
        If Len(ps(lp)) > 5 Then
            mas(i, 1) = CleanString(ps(lp))
            Exit For
        End If
    Next
    For k = 1 To wd.Tables(i).Rows.Count
        mas(i, k + 1) = CleanString(wd.Tables(i).Cell(k, 2).Range)
    Next
Next
Set xl = CreateObject("Excel.Application")
xl.Visible = True
With xl.Workbooks.Add.Sheets(1)
    .Cells(1).Resize(tc, 10).Value = mas
    With .UsedRange
        .ColumnWidth = 27
        .Columns(2).ColumnWidth = 72
        .Columns(6).ColumnWidth = 72
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
    End With
End With
Set xl = Nothing
End Sub

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

Найдите и выделите повторяющиеся абзацы в документе Word с кодом VBA


Найдите и выделите повторяющиеся абзацы в документе Word с кодом VBA

Чтобы найти и выделить повторяющиеся абзацы в документе Word, следующий код VBA может оказать вам услугу, сделайте следующее:

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

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

Код VBA: найдите и выделите повторяющиеся абзацы в документе Word:

Sub highlightdup()
    Dim I, J As Long
    Dim xRngFind, xRng As Range
    Dim xStrFind, xStr As String
    Options.DefaultHighlightColorIndex = wdYellow
    Application.ScreenUpdating = False
    With ActiveDocument
        For I = 1 To .Paragraphs.Count - 1
            Set xRngFind = .Paragraphs(I).Range
            If xRngFind.HighlightColorIndex <> wdYellow Then
                For J = I + 1 To .Paragraphs.Count
                    Set xRng = .Paragraphs(J).Range
                    If xRngFind.Text = xRng.Text Then
                        xRngFind.HighlightColorIndex = wdBrightGreen
                        xRng.HighlightColorIndex = wdYellow
                    End If
                Next
            End If
        Next
    End With
End Sub

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

док выделить дублирующие предложения 1


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

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

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

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

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

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


Номинальный 4.5 из 5


·


рейтинги 1

Like this post? Please share to your friends:
  • Найти word установленный на компьютере
  • Найти word текстовый документ
  • Найти word до его изменения
  • Найти word для андроида
  • Найти word для windows 10