0 / 0 / 0 Регистрация: 01.11.2019 Сообщений: 5 |
|
1 |
|
Word 01.11.2019, 09:31. Показов 12026. Ответов 9
Здравствуйте!
0 |
Заблокирован |
|
01.11.2019, 09:39 |
2 |
Klerkof, приложите к сообщению такой документ, тем самым многократно увеличив свои шансы на получение помощи.
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,505 Записей в блоге: 4 |
|
01.11.2019, 09:59 |
3 |
имеется ячейка со значение #N/A нужно удалить из всех таблиц имеются ли в таблицах объединенные ячейки
0 |
0 / 0 / 0 Регистрация: 01.11.2019 Сообщений: 5 |
|
01.11.2019, 10:47 [ТС] |
4 |
Обьединенные ячейки имеются в двух первых строках, но их редактировать не надо, так как это названия столбцов
0 |
0 / 0 / 0 Регистрация: 01.11.2019 Сообщений: 5 |
|
01.11.2019, 11:06 [ТС] |
5 |
Вот пример файла:
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,505 Записей в блоге: 4 |
|
01.11.2019, 11:45 |
6 |
Вот пример файла: ваш пример не имеет объединенных ячеек — это противоречит вам же
0 |
0 / 0 / 0 Регистрация: 01.11.2019 Сообщений: 5 |
|
01.11.2019, 11:57 [ТС] |
7 |
ваш пример не имеет объединенных ячеек — это противоречит вам же это не принципиально, их можно будет разделить и ничего не потеряем
0 |
shanemac51 Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,505 Записей в блоге: 4 |
||||||
01.11.2019, 12:17 |
8 |
|||||
ПОПРОБУЙТЕ КОД(на копии конечно)
Миниатюры
Вложения
0 |
Narimanych 2630 / 1636 / 744 Регистрация: 23.03.2015 Сообщений: 5,142 |
||||
01.11.2019, 19:07 |
9 |
|||
Klerkof, Попробуйте как вариант
1 |
0 / 0 / 0 Регистрация: 01.11.2019 Сообщений: 5 |
|
05.11.2019, 05:06 [ТС] |
10 |
Работает, огромное спасибо) Добавлено через 1 час 6 минут
0 |
I would like to delete certain lines from my word document using a VBA macro. Basically the (block of) text to be deleted (and replaced by «***») follows a certain pattern (below).
Bottom of Form
perma-link
Top of Form
save
Bottom of Form
[+] ....
[–] ....
Top of Form
«….» represents text that changes every block, but for sure the line starts with «[+]» or «[-]».
Please suggest a suitable macro
EDIT: In the screenshot, I would like to keep the text in yellow and delete the rest. (in the actual file, the text isn’t in yellow)
PS-FYI, I tried using the example looping a find and delete row macro (for line by line deletion) but i get a runtime error 5941 with debugging option highlighting the line «selection.row.delete» in the macro.
What does this mean?
asked Oct 3, 2013 at 17:20
9
Assuming that the example list is a list of paragraphs beginnings the following code should do the trick. What you have to do is to place all ‘paragraphs starting’ into array arrRemove
as I did for the test. If any of the mark is a special marks (see this link for additional information) you need to add in front of it as I did for
[+]
and [-]
. Hope this is what you are looking for.
Sub Macro2()
Dim arrRemove As Variant
arrRemove = Array("Bottom of Form", "perma -link", "Top of Form", _
"[+]", "[-]", "Donec", "In")
Dim i!
For i = 0 To UBound(arrRemove)
Activedocument.Range(0,0).select
Selection.Find.ClearFormatting
With Selection.Find
.Text = arrRemove(i) & "*^13"
.Replacement.Text = "" 'replace with nothing
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
End Sub
The above macro will remove all yellow paragraph in the following document.
answered Oct 3, 2013 at 20:32
Kazimierz JaworKazimierz Jawor
18.8k7 gold badges35 silver badges55 bronze badges
1
Sub Макрос()
Dim tbl As Table, i As Long
‘1. Отключение монитора (может это ускорит макрос и не будет мерцать).
Application.ScreenUpdating = False
‘2. Присваиваем таблице имя «tbl».
Set tbl = ActiveDocument.Tables(1)
‘3. Цикл по строкам таблицы с последней по четвёртую.
For i = tbl.Rows.Count To 4 Step -1
‘ Если в текущей ячейке в столбце 1 текст «Начало», то удалить строку.
‘ В ворде, в конце каждой ячейки есть два символа. Один символ в виде кружка,
‘ второй символ вообще не видно, но VBA его видит.
If tbl.Cell(i, 1).Range.Text = «Начало» & Chr(13) & Chr(7) Then
tbl.Rows(i).Delete
End If
Next i
‘4. Вкл. монитора.
Application.ScreenUpdating = True
‘5. Сообщение.
MsgBox «Готово.», vbInformation
End Sub
[свернуть]
Как удалить все пустые строки и столбцы из таблиц в Word? В этом руководстве показано несколько способов удаления пустых строк и столбцов из таблиц в документе Word.
Вручную удалить все пустые строки и столбцы из таблиц
Удалите все пустые строки и столбцы из таблиц с помощью кода VBA
Удалите все пустые строки и столбцы из таблиц одним щелчком мыши
Вручную удалить все пустые строки и столбцы из таблиц
Microsoft Office Word не предоставляет удобный способ удаления пустых строк и столбцов, и вам необходимо удалить их, вручную выбрав каждую пустую строку и столбец, а затем удаляя их по одному.
Шаг 1: Выберите пустую строку или пустой столбец, который вы хотите удалить. Смотрите скриншот:
Шаг 3: Под Настольные Инструменты, щелкните значок макет вкладка;
Шаг 4: в Строки и столбцы группу, нажмите Удалить строки или Удалить столбцы.
Удалите все пустые строки и столбцы из таблиц с помощью кода VBA
Макрофункция Word предоставляет гораздо более удобный способ удалить все пустые строки и столбцы из таблиц в документе. Вы можете удалить все пустые строки и столбцы следующим образом.
Шаг 1: нажмите «Alt-F11» открыть окно Microsoft Visual Basic для приложений;
Шаг 2: нажмите Модули на Вставить вкладку, скопируйте и вставьте следующий код VBA в окно модуля;
Шаг 3: Затем нажмите Run кнопку, чтобы применить VBA.
Код VBA для удаления всех пустых строк и столбцов из таблиц:
Sub DeleteEmptyTablerowsandcolumns ()
Приложение.ScreenUpdating = False
Dim Tbl As Table, cel As Cell, i As Long, n As Long, fEmpty As Boolean
С ActiveDocument
Для каждого тбл в. Таблицах
n = Таблица.Столбцов.Количество
Для i = n To 1 Шаг -1
fПусто = Истина
Для каждой ячейки в Tbl.Columns (i) .Cells
Если Len (cel.Range.Text)> 2, то
fEmpty = Ложь
Выход для
End If
Следующий чел
Если fEmpty = True, то Tbl.Columns (i) .Delete
Затем я
Следующая таблица
Конец с
С ActiveDocument
Для каждого тбл в. Таблицах
n = Tbl.Rows.Count
Для i = n To 1 Шаг -1
fПусто = Истина
Для каждой ячейки In Tbl.Rows (i) .Cells
Если Len (cel.Range.Text)> 2, то
fEmpty = Ложь
Выход для
End If
Следующий чел
Если fEmpty = True, то Tbl.Rows (i) .Delete
Затем я
Следующая таблица
Конец с
Set cel = Nothing: Set Tbl = Nothing.
Application.ScreenUpdating = True
End Sub
Удалите все пустые строки и столбцы из таблиц одним щелчком мыши
Kutools for Word предоставляет вам наиболее удобный способ удалить все пустые строки и столбцы из таблиц в документе. Вам просто нужно нажать один раз, и Kutools for Wordс Delete Rows/Columns Утилита быстро удалит все пустые строки и столбцы из всех или выбранных таблиц.
После установки Kutools for Word, пожалуйста, сделайте следующее:(Бесплатная загрузка Kutools for Word Сейчас!)
1. Нажмите Кутулс Плюс > Delete Rows/Columns на Table панель.
2. Затем появится диалоговое окно, выберите область, из которой вы хотите удалить таблицы, в разделе Искать в, затем отметьте Строка вариант и Пустая строка вариант или чек Колонка вариант и Пустая строка вариант как вам нужно. Если вы хотите удалить все пустые строки и столбцы, вам нужно применить эту операцию дважды.
Появится диалоговое окно, напоминающее вам, сколько таблиц было обработано, щелкните OK чтобы закрыть, а пустые строки и столбцы были удалены из таблиц.
Наконечник.Если вы хотите удалить пустые строки с листа Excel, Удалить пустые строки полезности Kutools for Excel могу помочь тебе.
Рекомендуемые инструменты для повышения производительности Word
Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени
- Сложные и повторяющиеся операции можно производить разово за секунды.
- Вставляйте сразу несколько изображений из папок в документ Word.
- Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
- Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
- Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 16.04.2016 14:35:33
- Алексей535
- рядовой
- Неактивен
- Зарегистрирован: 16.04.2016
- Сообщений: 6
Тема: Автоматическое удаление отдельных строк в большой таблице
Добрый день.
Друзья, прошу помощи. Имеется большая таблица в Word 2007, около 100 стр.
Необходимо автоматизировать удаление отдельных повторяющихся строк.
Вручную это делать очень долго, к тому же файл около 7мб, комп работает медленно.
Для образца прикрепил файл Word, где желтым цветом выделены строки, которые надо удалить. Т.е. проще говоря, убрать разрез по мужчинам во всей таблице.
И второй вопрос — есть ли возможность автоматического объединения ячеек в строках, выделенных синим цветом?
Буду признателен. Алексей.
Post’s attachments
ОБРАЗЕЦ1.docx 13.34 Кб, 7 скачиваний с 2016-04-16
You don’t have the permssions to download the attachments of this post.
2 Ответ от shanemac51 16.04.2016 15:15:01
- shanemac51
- генерал-полковник
- Неактивен
- Зарегистрирован: 05.03.2012
- Сообщений: 467
- Поблагодарили: 119
- За сообщение: 1
Re: Автоматическое удаление отдельных строк в большой таблице
откуда вы сформировали этот файл
|||||||||
|||||||||
ДОБЫЧА ПОЛЕЗНЫХ ИСКОПАЕМЫХ||===|слить|===|===|===|===|===|===
человек|||||||||
%|50||||||||
%|30||||||||
в том числе:|||||||||
мужчин|||удал||||||
человек|30||удал||||||
%|3.4||удал||||||
%|100||удал||||||
женщин|||||||||
человек|50||||||||
%|100||||||||
%|||||||||
ОБРАБАТЫВАЮЩИЕ ПРОИЗВОДСТВА|||||||||
человек|123||||||||
3 Ответ от shanemac51 16.04.2016 15:17:21
- shanemac51
- генерал-полковник
- Неактивен
- Зарегистрирован: 05.03.2012
- Сообщений: 467
- Поблагодарили: 119
- За сообщение: 1
Re: Автоматическое удаление отдельных строк в большой таблице
100-страничные таблицы ворд конечно не любит —
более пригоден ексель
4 Ответ от Алексей535 16.04.2016 16:16:37
- Алексей535
- рядовой
- Неактивен
- Зарегистрирован: 16.04.2016
- Сообщений: 6
Re: Автоматическое удаление отдельных строк в большой таблице
Вообще изначально таблица формируется в Excell из специальной программы, обрабатывающей массивы данных. Я скопировал таблицу из Excell в Word и начал в ворде форматировать. Вы говорите что проще в Экселе поудалять?
5 Ответ от МВТ 16.04.2016 17:13:28
- МВТ
- сержант
- Неактивен
- Зарегистрирован: 04.04.2016
- Сообщений: 27
- Поблагодарили: 12
- За сообщение: 1
Re: Автоматическое удаление отдельных строк в большой таблице
Согласен, в экселе это сделать проще. Но необходимо уточнить: всегда ли именно такая структура данных?
6 Ответ от МВТ 16.04.2016 17:33:12
- МВТ
- сержант
- Неактивен
- Зарегистрирован: 04.04.2016
- Сообщений: 27
- Поблагодарили: 12
- За сообщение: 1
Re: Автоматическое удаление отдельных строк в большой таблице
Короче, попробуйте так (макросы для экселя)
Sub DeleteRows()
Dim arr(), i As Long, address As String
Application.ScreenUpdating = False
arr = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
For i = 4 To UBound(arr)
If arr(i, 1) = "мужчин" Then
If address = "" Then
address = "A" & i & ":A" & i + 4
Else
address = address & "," & "A" & i & ":A" & i + 4
End If
End If
Next
MsgBox address
Range(address).EntireRow.Delete
Application.ScreenUpdating = True
End Sub
Sub MergeCells()
Application.ScreenUpdating = False
Dim arr(), i As Long
arr = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
For i = 3 To UBound(arr)
If arr(i, 1) = UCase(arr(i, 1)) And arr(i, 1) <> "%" Then Range("A" & i & ":J" & i).Merge
Next
Application.ScreenUpdating = True
End Sub
7 Ответ от Алексей535 16.04.2016 17:33:29
- Алексей535
- рядовой
- Неактивен
- Зарегистрирован: 16.04.2016
- Сообщений: 6
Re: Автоматическое удаление отдельных строк в большой таблице
Ребят, один хороший специалист viteralex написал такой код. Но пока он работает некорректно. Там вроде циклически удаляется строка, где в первой ячейке есть слово «мужчин», и три следующих за ней строки. Но после запуска макроса он удаляет не то что нужно и остается такая таблица (см.скрин) и ошибка выскакивает. Как исправить?
Перед запуском макроса курсор должен находиться в таблице:
Sub DeleteRows()
Dim oRow As Row
Set oRow = Selection.Tables(1).Rows.First
Do
If oRow.Cells(1).Range.Text Like «мужчин*» Then
oRow.Next.Next.Next.Delete
oRow.Next.Next.Delete
oRow.Next.Delete
Set oRow = oRow.Next
oRow.Previous.Delete
Else
Set oRow = oRow.Next
End If
Loop Until oRow Is Nothing
End Sub
Post’s attachments
4.JPG
4.JPG 27.57 Кб, 1 скачиваний с 2016-04-16
You don’t have the permssions to download the attachments of this post.
8 Ответ от Алексей535 16.04.2016 18:05:54
- Алексей535
- рядовой
- Неактивен
- Зарегистрирован: 16.04.2016
- Сообщений: 6
Re: Автоматическое удаление отдельных строк в большой таблице
МВТ пишет:
Короче, попробуйте так (макросы для экселя)
МВТ, проверил первый макрос. работает. но удаляется и строка с текстом женщин. Её удалять не надо.
Второй макрос работает. СПАСИБО.
Просьба, поясните, какие алгоритмы они используют. ну т.е. как он работает? Как эти макросы можно отредактировать, чтобы я мог применять эти макросы в качестве шаблонов для других случаев. например, когда надо удалить строку с другим текстом в ячейке, когда надо удалить, например, одну строку после строки с текстом =мужчин=, а не три как в вашем коде…
И просьба, желательно для Wordа бы макрос. А то я же когда из экселя копировал таблицу. замучился её форматировать. и опять тогда придется форматировать…
9 Ответ от МВТ 16.04.2016 18:25:36
- МВТ
- сержант
- Неактивен
- Зарегистрирован: 04.04.2016
- Сообщений: 27
- Поблагодарили: 12
- За сообщение: 1
Re: Автоматическое удаление отдельных строк в большой таблице
Да, механическая ошибка. Замените строку
address = "A" & i & ":A" & i + 4
на
address = "A" & i & ":A" & i + 3
И удалите строку
По поводу алгоритмов:
1) вычисляем последнюю заполненную ячейку в столбце А
2) данные из столбца А до последней заполненно ячейки забираем в массив для увеличения скорости обработки и в цикле перебираем
3) формируем текстовую строку адресов ячеек, которые содержат контрольное слово
3) на ее основе задаем диапазон и удаляем соответствующие ему строки.
Какие могут быть проблемы при форматировании таблицы, скопированной из экселя в ворд мне не совсем понятно, возможно Вам имеет смысл задать соответствующий вопрос на этом форуме с описанием сложностей?
10 Ответ от Алексей535 17.04.2016 02:52:58
- Алексей535
- рядовой
- Неактивен
- Зарегистрирован: 16.04.2016
- Сообщений: 6
Re: Автоматическое удаление отдельных строк в большой таблице
МВТ пишет:
Да, механическая ошибка. Замените строку
address = "A" & i & ":A" & i + 4
на
address = "A" & i & ":A" & i + 3
И удалите строку
Какие могут быть проблемы при форматировании таблицы, скопированной из экселя в ворд мне не совсем понятно, возможно Вам имеет смысл задать соответствующий вопрос на этом форуме с описанием сложностей?
МВТ, благодарю за помощь. Всёработает. ВАш макрос работает в Excell.
Ещё мне для Ворда помог с макросом Александр. Вот его код:
‘Удаление строк
Sub DeleteRows()
Dim oRow As Row
Set oRow = Selection.Tables(1).Rows.First
Do
If oRow.Cells(1).Range.text Like «мужчин*» Then
oRow.Next.Delete
oRow.Next.Delete
oRow.Next.Delete
Set oRow = oRow.Next
oRow.Previous.Delete
Else
Set oRow = oRow.Next
End If
Loop Until oRow Is Nothing
End Sub
‘Объединение ячеек
Sub MergeCells()
‘ Массив со строками, которые должны быть в первой ячейке объединяемых строк таблицы
Dim Branches() As Variant
Branches = Array( _
«Сельское хозяйство, охота и лесное хозяйство», _
«Добыча полезных ископаемых», _
«Добыча топливно-энергетических полезных ископаемых», _
«Добыча полезных ископаемых, кроме топливно-энергетических», _
«Обрабатывающие производства», _
«Производство пищевых продуктов, включая напитки, и табака», _
«Текстильное и швейное производство», _
«Производство кожи, изделий из кожи и производство обуви», _
«Обработка древесины и производство изделий из дерева», _
«Целлюлозно-бумажное производство; издательская и полиграфическая деятельность», _
«Производство кокса, нефтепродуктов и ядерных материалов», _
«Химическое производство», _
«Производство резиновых и пластмассовых изделий», _
«Производство прочих неметаллических минеральных продуктов», _
«Производство готовых металлических изделий», _
«Производство машин и оборудования», _
«Производство электрооборудования, электронного и оптического оборудования», _
«Производство транспортных средств и оборудования», _
«Прочие производства», _
«Производство и распределение электроэнергии, газа и воды», _
«Строительство», _
«Связь», _
«Транспорт и связь» _
)
Dim i As Long
Dim cellText As String
For i = 1 To Selection.Tables(1).Rows.Count
With Selection.Tables(1).Rows.Item(i)
cellText = .Cells(1).Range.text
cellText = Left(cellText, Len(cellText) — 2)
If Contains(Branches, cellText) Then
.Cells.Merge
.Range.ParagraphFormat.Alignment = wdAlignParagraphLeft
End If
End With
Next
End Sub
‘Функция проверяет содержится ли в массиве искомая строка
Private Function Contains(ar() As Variant, text As String)
Dim i As Integer
If Len(text) = 0 Then
Contains = False
Exit Function
End If
For i = 1 To UBound(ar)
If Trim(LCase(ar(i))) = Trim(LCase(text)) Then
Contains = True
Exit Function
End If
Next
Contains = False
End Function
А по поводу вставки таблиц из экселя в ворд есть проблемы. например, таблица выходит за границы документа, приходится сдвигать графы по порядку..документ то огромный, таблица на 100стр. одну графу сдвинул, ждешь пока это по всей таблице пройдет, секунд 20.. тормозит.. но где то здесь на форуме я видел рекомендации по грамотной вставке таблиц из эксел..
11 Ответ от shanemac51 17.04.2016 08:20:45
- shanemac51
- генерал-полковник
- Неактивен
- Зарегистрирован: 05.03.2012
- Сообщений: 467
- Поблагодарили: 119
- За сообщение: 1
Re: Автоматическое удаление отдельных строк в большой таблице
одну графу сдвинул, ждешь пока это по всей таблице пройдет, секунд 20..
это я и имела в виду, говоря ,что таблицу в 100стр, WORD не тянет
12 Ответ от МВТ 17.04.2016 08:33:55
- МВТ
- сержант
- Неактивен
- Зарегистрирован: 04.04.2016
- Сообщений: 27
- Поблагодарили: 12
- За сообщение: 1
Re: Автоматическое удаление отдельных строк в большой таблице
А какова вообще цель переноса всех данных в ворд? Во-первых, можно переносить относительно небольшими частями актуальную на данный момент информацию. Во-вторых (а проблема, судя по всему в выводе на печать) достаточно несложно настроить все, что надо в самом экселе и печатать прямо из него. Проще говоря, что Вы хотите получить из своей таблицы?
13 Ответ от Алексей535 18.04.2016 07:13:10
- Алексей535
- рядовой
- Неактивен
- Зарегистрирован: 16.04.2016
- Сообщений: 6
Re: Автоматическое удаление отдельных строк в большой таблице
МВТ пишет:
А какова вообще цель переноса всех данных в ворд?
Поясню. Таблицы переносятся в Ворд для подготовки документа — бюллетеня для размещения в Базе готовых документов. Бюллетень содержит оглавление, содержание, сами таблицы (основная информация), комментарии. Для удобства потребителя. Ну т.е. для приведения данных к удобочитаемому компактному виду.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться