Тема: Удалить строки в таблице с пустой ячейкой
Имеется большая таблица, в некоторых строках которой в 6 столбце есть пустая ячейка. Нужно найти такие ячейки и удалить строки, в которых они есть. Поможете макросом?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Имеется большая таблица, в некоторых строках которой в 6 столбце есть пустая ячейка. Нужно найти такие ячейки и удалить строки, в которых они есть. Поможете макросом?
Вот макрос
Public Sub DeleteCells()
Dim Doc As Document
Dim Table As Table
Set Doc = ActiveDocument
For Each Table In Doc.Tables
Table.Range.Select
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "[^0013]{1;}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next Table
End Sub
неа, не работает. Удаляет пробелы кое-где, и все
Все работает, в этом макросе вообще нет ссылок на пробелы, вышлите таблицу
Опять же вопрос, если в строке встречаются пустые и заполненные ячейки то удалять всю строку? или же только когда все пустые ячейки в строке. В зависимости от этого уже просто придется дописывать созданный макрос, потому, что без действий уже созданного макроса в остальной могут возникать ошибки из-за не правильного форматирования таблицы автором
В строке могут быть как пустые, так и не пустые ячейки. Нас интересует только 6 ячейка каждой строки. Если в ней пусто, удалить всю строку.
Вот теперь понятно сделаем
Вот попробуйте макрос по Вашим условиям
Public Sub DeleteCells()
Dim Doc As Document
Dim Table As Table
Dim Rw As Row
Dim Cell As Cell
Set Doc = ActiveDocument
For Each Table In Doc.Tables
Table.Range.Select
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "[^0013]{1;}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
For Each Rw In Table.Rows
i = 0
For Each Cell In Rw.Cells
i = i + 1
If Cell.Range.Characters.Count = 1 And i = 6 Then
Rw.Delete
End If
Next Cell
Next Rw
Next Table
End Sub
Вот спасибо! Весь инет перерыл в поисках того. как делать макросы в ворде. Один эксель. А вы выручили.
А на работу взять слабо? Я Вам весь производственный процесс обеспечу?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться