С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 18.12.2021
Сообщений: 10
Word

Удаление пустых строк в таблице ворда

02.10.2022, 16:04. Показов 2419. Ответов 23

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Есть документы с большим количеством таблиц, необходимо удалить во всех таблицах полностью пустые строки и строки в которых есть пустые ячейки.

Есть на форуме похожие задачи, но под свою не получилось оптимизировать их.
Буду рад, если поможете!
Спасибо!
Вложения
Тип файла: docx Азово.docx (44.9 Кб, 32 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2022, 16:04
Ответы с готовыми решениями:

Удаление пустых строк в таблице
Тема не нова, но почему-то не работает если в первой ячейке стоит знак абзаца. Прошу помощи, что делаю не так? Sub DeleteEmptyRows()...

Удаление диапазона строк в таблице при наличии пустых значений в определенных столбцах
Добрый день! Друзья, помогите, пожалуйста с модификацией данного кода под уникальные условия: Sub УдалениеПустыхСтрокПоусловиюH() ...

Макрос удаления пустых строк в таблице
Имеется таблица. Если в столбце Н строки не содержат никаких значений (пустые) то такие строки надо удалить. Казалось бы проще некуда....

23
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.10.2023, 16:24
Студворк — интернет-сервис помощи студентам
перебирать колонки не для всей таблице
Visual Basic
1
For j = 2 To oTable.Columns.Count Step 1
а количество ячеек в каждой строке

Visual Basic
1
 For j = 2 To oTable.Rows(i).Cells.Count
Добавлено через 2 минуты
но убрать проверку:
Visual Basic
1
 If (oTable.Columns.Count * oTable.Rows.Count) = oTable.Range.Cells.Count Then ' ячеек = колонок * строк
1
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
08.10.2023, 16:13
Alex77755, спасибо!
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
09.10.2023, 09:14
Цитата Сообщение от monetgen Посмотреть сообщение
можно ли придумать какое-то решение для пункта 1.2?
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
Option Explicit
Sub DelEmptyRows()
Dim i, d, xStr, xRowNum, xColsCount, tCells, MaxCells
' ВСЕ строки, в которых есть объединённые или непустые ячейки - ПРОПУСКАЮТСЯ
  Application.ScreenUpdating = False
  For d = 1 To ActiveDocument.Tables.Count 'перебираем таблицы текущего документа
    xRowNum = 0 ' изначально ставим текущей несуществующую строку за пределами таблицы
    xColsCount = -1  ' и отмечаем её непустой, чтобы не пытаться удалить
    Set tCells = ActiveDocument.Tables(d).Range.Cells 'Массив ячеек таблицы
    MaxCells = ActiveDocument.Tables(d).Columns.Count
    For i = tCells.Count To 1 Step -1 'перебор ЯЧЕЕК таблицы от последней к первой
      If tCells(i).RowIndex <> xRowNum Then 'Наша ячейка в строке, отличающейся от строки предыдущей ячейки
        If xColsCount >= 0 Then tCells(i + 1).Range.Rows.Delete 'В строке нет ни одной заполненной ячейки
        xRowNum = tCells(i).RowIndex ' Устанавливаем новый номер обрабатываемой строки
        xColsCount = MaxCells ' Счётчик ячеек строки - от последней к первой
      End If
      If xColsCount > 0 Then 'Если в строке ещё не встретилась заполненная ячейка
        xColsCount = xColsCount - 1 'уменьшаем счётчик ячеек
        xStr = Trim(Replace(Replace(tCells(i).Range.Text, Chr(13), ""), Chr(7), "")) ' что в ячейке, за вычетом разделителей.
        If Len(xStr) > 0 Then xColsCount = -1 ' Если какая-то ячейка в строке НЕ ПУСТАЯ - эту строку помечаем неудаляемой
      End If
    Next i
    If xColsCount >= 0 Then tCells(1).Range.Rows.Delete ' удаляем первую строку, если она пустая
  Next d
  Application.ScreenUpdating = True
  MsgBox "Я кончила! Твоя очередь...", vbInformation
End Sub
Код работает с таьлицей, имеющей объединённые и нарисованные ячейки как по вертикали, так и по горизонтали. Удаляются все строки, в которых не нашлось ни одной заполненной ячейки, даже если в этой строке меньше ячеек, чем столбцов в таблице (просто какие-то ячейки объединены либо с соседними по горизонтали и учитываются как одна, либо с вышестоящими и учитываются уже в той строке, где находится самая верхняя из объединённых). Если есть необходимость удалять только те пустые строки, в которых нет объединённых, надо в строках 13 и 23 поменять
Code
1
If xColsCount >= 0 ...
на
Code
1
If xColsCount = 0 ...
1
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
11.10.2023, 23:56
Punkt5, большое спасибо! Всё прекрасно работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2023, 23:56
Помогаю со студенческими работами здесь

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

Удаление пустых строк
Этот код удаляет пустые строки, относительно столбца В On Error Resume Next ...

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

Удаление пустых строк в диапазоне
Ребят, у меня опять проблемы по невнимательности. Написал тут Private Sub CommandButton1_Click() Dim ra As Range, delra As Range ...

Удаление пустых строк Word
Добрый день. Столкнулся с проблемой при замене нескольких подряд идущих знаков абзаца(пустые строки в тексте) для их удаления...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru