0 / 0 / 0 Регистрация: 29.12.2010 Сообщений: 6 |
|
1 |
|
29.12.2010, 15:07. Показов 3159. Ответов 6
Помогите пожалуйста! На РГЗ задание последнее надо сделать, а я не знаю как. VBA не шарю, если б на С++ ещё ладно. а вот VBA…
0 |
исследователь 325 / 104 / 3 Регистрация: 18.03.2010 Сообщений: 1,079 Записей в блоге: 2 |
|
29.12.2010, 16:31 |
2 |
речення это что?
0 |
Заблокирован |
||||
29.12.2010, 18:18 |
3 |
|||
Сообщение было отмечено Памирыч как решение Решение
1 |
0 / 0 / 0 Регистрация: 29.12.2010 Сообщений: 6 |
|
30.12.2010, 00:08 [ТС] |
4 |
фух. спасибо ОГРОМНОЕ ОГРОМНОЕ!!! Добавлено через 52 минуты
0 |
Заблокирован |
||||
30.12.2010, 00:29 |
5 |
|||
Сообщение было отмечено Памирыч как решение Решение
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
asked Oct 11, 2013 at 23:08
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
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 нажмите клавишу для запуска этого кода, все повторяющиеся предложения выделяются сразу, первые отображенные повторяющиеся абзацы выделяются зеленым цветом, а другие дубликаты выделяются желтым цветом, см. снимок экрана:
Рекомендуемые инструменты для повышения производительности Word
Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени
- Сложные и повторяющиеся операции можно производить разово за секунды.
- Вставляйте сразу несколько изображений из папок в документ Word.
- Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
- Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
- Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.
Комментарии (15)
Номинальный 4.5 из 5
·
рейтинги 1