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

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

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

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

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

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

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

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

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

23
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
06.10.2023, 16:24 21
Author24 — интернет-сервис помощи студентам
перебирать колонки не для всей таблице
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
4 / 4 / 0
Регистрация: 25.07.2017
Сообщений: 51
08.10.2023, 16:13 22
Alex77755, спасибо!
0
малоболт
1303 / 490 / 208
Регистрация: 30.01.2020
Сообщений: 1,202
09.10.2023, 09:14 23
Цитата Сообщение от 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 поменять
Код
If xColsCount >= 0 ...
на
Код
If xColsCount = 0 ...
1
4 / 4 / 0
Регистрация: 25.07.2017
Сообщений: 51
11.10.2023, 23:56 24
Punkt5, большое спасибо! Всё прекрасно работает!
0
11.10.2023, 23:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2023, 23:56
Помогаю со студенческими работами здесь

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

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

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

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

Удаление пустых строк в ListBox
Private Sub ListBox1_Enter() For k = 2 To 50 If Cells(i + 1, 1).Value &lt;&gt; &quot; &quot; Then...

Подфиксить макрос по удалению пустых строк в таблице, Word документ
Доброго дня форумчане. Информации по теме нашел здесь много. Огромное спасибо всем, кто ранее...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru