Меню

Макрос Word Удалить строки из таблицы если ячейка пуста

Макрос Word Удалить строки из таблицы, если ячейка пуста

Я пытаюсь запустить макрос, который будет проверять выбранную таблицу на наличие пустых ячеек в столбце 2, и, если есть пустые ячейки, удалить эту строку.

И это действительно близко к тому, что я хочу, но я просто не уверен, как указать пустые ячейки в столбце 2. Я также попытался изменить строку noOfCol на:

Но при этом удаляются строки, в которых любой столбец пуст. Мне нужно удалить только строки, в которых столбец 2 пуст. Спасибо

2 ответа

Работа со всеми ячейками в столбце является проблемой, потому что невозможно установить Range для столбца. Range должен быть непрерывным набором символов в документе. Хотя столбец выглядит непрерывным, на самом деле его содержимое не выглядит. Символы таблицы идут сверху-слева направо и сверху вниз (строки).

Ближайший код, который можно получить, — это выбрать столбец, а затем работать с объектом Selection . Или петлите ряды.

В следующем примере кода показано, как «зацикливать строки» — аналогично тому, как используется код в вопросе. Ключевым моментом здесь является использование Table.Cells для цикла, причем счетчик For обозначает индекс строки, а номер столбца (2) обозначает индекс столбца.

А вот код, демонстрирующий использование Selection

Приведенный ниже код предназначен для «всех без исключения» страниц после слияния почты [я использовал вложенный цикл (один для [ТАБЛИЦА], а другой для пустых [ЯЧЕЙКИ])

Источник

Как удалить таблицу в Word 2003/2007/2010/2013/2016? Удаление таблиц в Word макросом VBA

В документах Word достаточно часто приходится иметь дело с таблицами, стандартных инструментов для этого вполне достаточно. В данной публикации рассмотрено несколько способов, позволяющих удалять таблицы в различных версиях приложения.

Удаление таблицы в Word стандартными средствами

Word 2003

Для удаления выделенной таблицы в Word 2003 необходимо зайти в меню Таблица и выполнить команду Удалить/Таблицу.

Word 2007 и Word 2010

Чтобы удалить таблицу в Word 2007 или Word 2010 нужно перейти на вкладку «Макет», в группе кнопок «Строки и столбцы» открыть меню кнопки «Удалить» и выбрать из списка команду «Удалить таблицу».

Word 2013

В Word 2013 таблицу можно удалить аналогично тому, как это делается в Word 2007 или Word 2010, а можно и вообще без лишних движений, при выделении таблицы либо после нажатия правой кнопки мыши в области таблицы сразу становится активной кнопка, при помощи которой можно удалить таблицу.

Word 2016

В Word 2016 таблица удаляется аналогично Wor2013.

Удаление всех таблиц в активном документе Word

Для разового удаления той или иной таблицы вполне подходят стандартные методы, описанные выше. Для удаления всех таблиц в активном документе Word больше подойдет макрос VBA, который найдет и удалит каждую таблицу документа. Макрос работает одинаково в любой версии.

Удаление таблиц в выделенной области документа Word

Ниже приведен программный код, позволяющий удалять все таблицы не во всем активном документе, а в выделенной его области. Перед запуском этого макроса необходимо выделить фрагмент документа.

Читайте также:  Чем дешевле отопить дом Сравниваем виды топлива и отопительное оборудование

Для того, чтобы перенести программный код на свой компьютер, наведите курсор мыши на поле с программным кодом, нажмите на одну из двух кнопкок knopka_view_sourceв правом верхнем углу этого поля, скопируйте программный код и вставьте его в модуль проекта на своем компьютере (подробнее о том, как сохранить программный код макроса).

Источник



Как в офисе.

Если вам приходится работать с таблицами в Ворде, то, думаю, вам ни раз приходил вопрос: Как удалить строку или столбец в таблице? Давайте разберем два метода удаления: вручную и автоматически.

В ручную мы можем удалить любые строку или столбец в таблице. Также можно удалить пустые строки и столбы в Ворде с помощью скрипта VBA, который удалит их самостоятельно.

  • Удалить вручную строку или столбец
  • Удалить с помощью скрипта VBA все пустые строки и столбцы
  • 1 Удалить вручную строку или столбец
  • 2 Удалить с помощью скрипта VBA все пустые строки и столбцы

Удалить вручную строку или столбец

Данный метод проверялся в Word 2007, 2010, 2013.

Шаг 1.

Выделите левой кнопкой мыши строку или столбец, который вы желаете удалить. Подведите курсор к краю таблицы, чтобы курсор изменил свой вид. Смотрите на скриншот, как это сделать.

Шаг 2.

В ленте в разделе «Работа с таблицами» откройте вкладку «Макет».

Шаг 3.

В разделе «Строки и столбцы» найдите кнопку «Удаление», и в выпадающем списке выберите нужное вам действие.

В Word 2010-2013 в выплывающем окне есть этот же список по удалению столбцов и строк из таблицы.

как убрать ячейки в таблице в ворде

Удалить с помощью скрипта VBA все пустые строки и столбцы

Если вы желаете подчистить таблицу в Ворде от пустых строк и столбцов, то ручной метод может быть довольно утомительным, если, скажем, у вас большая таблица. Для этого можно прибегнуть к помощи VBA, который сделает все это за вас.

Данный метод проверялся в Word 2007, 2010, 2013

Как пользоваться скриптами VBA в Word читайте здесь >>>

Скопируйте этот скрипт и запустите его выполнение.

Sub DeleteEmptyTablerowsandcolumns()Application.ScreenUpdating = FalseDim Tbl As Table, cel As Cell, i As Long, n As Long, fEmpty As BooleanWith ActiveDocumentFor Each Tbl In .Tablesn = Tbl.Columns.CountFor i = n To 1 Step −1fEmpty = TrueFor Each cel In Tbl.Columns(i).CellsIf Len(cel.Range.Text) > 2 ThenfEmpty = FalseExit ForEnd IfNext celIf fEmpty = True Then Tbl.Columns(i).DeleteNext iNext TblEnd WithWith ActiveDocumentFor Each Tbl In .Tablesn = Tbl.Rows.CountFor i = n To 1 Step −1fEmpty = TrueFor Each cel In Tbl.Rows(i).CellsIf Len(cel.Range.Text) > 2 ThenfEmpty = FalseExit ForEnd IfNext celIf fEmpty = True Then Tbl.Rows(i).DeleteNext iNext TblEnd WithSet cel = Nothing: Set Tbl = NothingApplication.ScreenUpdating = TrueEnd Sub

Источник

Удаление содержимого из ячейки таблицы Word с помощью Excel VBA

В настоящее время я работаю над проектом, и я ищу некоторую помощь. Чтобы дать вам ребята макет того, что происходит, я буду выполнять сценарий шаг за шагом.

Читайте также:  Таблица переводная тонна метр

1) В настоящее время у меня есть строковый массив под названием «AnimalNamesToRemove» (для этого примера массив содержит следующие слова), который содержит слова, которые используются в качестве закладок в текстовом документе, который я ищу, чтобы удалить из таблицы слов ниже:

AnimalNamesToRemove

AnimalCat, AnimalDog, AnimalBird

2) В дополнение к массиву существует таблица в текстовом документе, которая имеет имя животного в первой колонке, а также некоторую информацию о животном (единственная информация, которая имеет значение, — это имя животное):

Таблица слов

введите описание изображения здесь

3) Для этого сценария у меня есть таблица excel, которую я использую для ссылки на слова в массиве и именах табличных таблиц, поскольку в используемом документе слова уже есть закладки, в которых хранятся имена, существующие в массив. Чтобы свести их вместе, существует таблица с двумя столбцами Excel, которая имеет имя закладки и фактическое имя животного (столбец второй ссылается на диапазон с именем «myRangeRef» ):

Электронная таблица

введите описание изображения здесь

4) То, что я хочу сделать, это то, что для каждого значения в массиве, указанном выше, если это значение (например, «AnimalDog» ) найдено в таблице электронных таблиц (например, в столбце «Закладка» ), то смещается на соответствующую ячейку рядом с ней в первом столбце (например, «Собака» ) и создать новую строку с разделителями-запятыми с этими значениями, такую ​​же, как «AnimalNamesToRemove» (например, Cat, Dog, Bird), а затем превратить ее в строковый массив с именем «AnimalsToDelete». После создания массива, и все значения были выбраны в первом столбце и сделаны в массив на основе ссылки во втором столбце, я хочу перейти по строке в таблице слов и для каждого значения, существующего в новом массиве «AnimalsToDelete», если это значение (например, Cat, Dog и Bird) существует в таблице слов (найдено в столбце один), я хочу, чтобы код удалял всю строку, в которой находится имя (см. Результат, показанный ниже)

Пример Результат

введите описание изображения здесь

Если у вас есть какие-либо решения и/или предложения, прокомментируйте их ниже.

ПРИМЕЧАНИЕ.. Первый раздел кода работает для создания массива строк (т.е. от «set wdTable =» до «next i» ), его удаление информации из таблицы слов, с проблемами.
Лучший,

Источник

Удаление содержимого из ячейки таблицы Word с помощью Excel VBA

В настоящее время я работаю над проектом, и я ищу некоторую помощь. Чтобы дать вам ребята макет того, что происходит, я буду выполнять сценарий шаг за шагом.

1) В настоящее время у меня есть строковый массив под названием “AnimalNamesToRemove” (для этого примера массив содержит следующие слова), который содержит слова, которые используются в качестве закладок в текстовом документе, который я ищу, чтобы удалить из таблицы слов ниже:

Читайте также:  Специфика стандарта евро для России

AnimalNamesToRemove

AnimalCat, AnimalDog, AnimalBird

2) В дополнение к массиву существует таблица в текстовом документе, которая имеет имя животного в первой колонке, а также некоторую информацию о животном (единственная информация, которая имеет значение, – это имя животное):

Таблица слов

введите описание изображения здесь

3) Для этого сценария у меня есть таблица excel, которую я использую для ссылки на слова в массиве и именах табличных таблиц, поскольку в используемом документе слова уже есть закладки, в которых хранятся имена, существующие в массив. Чтобы свести их вместе, существует таблица с двумя столбцами Excel, которая имеет имя закладки и фактическое имя животного (столбец второй ссылается на диапазон с именем “myRangeRef” ):

Электронная таблица

введите описание изображения здесь

4) То, что я хочу сделать, это то, что для каждого значения в массиве, указанном выше, если это значение (например, “AnimalDog” ) найдено в таблице электронных таблиц (например, в столбце “Закладка” ), то смещается на соответствующую ячейку рядом с ней в первом столбце (например, “Собака” ) и создать новую строку с разделителями-запятыми с этими значениями, такую ​​же, как “AnimalNamesToRemove” (например, Cat, Dog, Bird), а затем превратить ее в строковый массив с именем “AnimalsToDelete”. После создания массива, и все значения были выбраны в первом столбце и сделаны в массив на основе ссылки во втором столбце, я хочу перейти по строке в таблице слов и для каждого значения, существующего в новом массиве “AnimalsToDelete”, если это значение (например, Cat, Dog и Bird) существует в таблице слов (найдено в столбце один), я хочу, чтобы код удалял всю строку, в которой находится имя (см. Результат, показанный ниже)

Пример Результат

введите описание изображения здесь

Если у вас есть какие-либо решения и/или предложения, прокомментируйте их ниже.

ПРИМЕЧАНИЕ.. Первый раздел кода работает для создания массива строк (т.е. от “set wdTable =” до “next i” ), его удаление информации из таблицы слов, с проблемами.
Лучший,

Хорошо, основываясь на вашем коде, я добавил ссылку на Microsoft Word 16.0 Object Library в своем Excel VBE (Инструменты – Ссылки, установите флажок), поэтому у нас есть материал Word.
Затем я написал следующую процедуру:

Как вы можете видеть, я в основном придерживаюсь вашей точной структуры и отлично работает.

Основная проблема (строки в слове doc, которые не удаляются или не найдены) состоит в том, что текст в ячейке в таблице в слове фактически содержит 2 дополнительных символа в самом конце. Один из них – “поддельная новая строка”, а другой появляется, когда вы нажимаете эту кнопку абзаца на слове GUI – это маркер “конец ячейки”.

EDIT Я основывался на примерах “BlahOne” и “NameOne”, но да, вы можете редактировать его для животных, конечно…

Источник