powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос выделения колонок в разных таблицах и замены значений
8 сообщений из 8, страница 1 из 1
Макрос выделения колонок в разных таблицах и замены значений
    #39149319
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Word документ с таблицами. Начиная с 5 таблицы и до конца документа, таблицы (а их может быть от одной до четырёх) содержат колонки с заголовком "V". Нужно выделить все такие колонки и заменить в них текст "Да" на "V", "Нет" на "".

В написании макросов пока нулевой, нашел только как двумя способами выделять 1 колонку в 5 таблице и то без поиска по заголовку "V", а с указанием номера таблицы.
Код: vbnet
1.
2.
3.
4.
5.
6.
Sub Макрос1()
    Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=5, Name:=""
    Selection.Find.ClearFormatting
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.EndKey Unit:=wdColumn, Extend:=True
End Sub



Код: vbnet
1.
2.
3.
4.
5.
Sub Макрос3()
rs = ActiveDocument.Tables(5).Cell(2, 1).Range.Start
re = ActiveDocument.Tables(5).Cell(n, 1).Range.End
ActiveDocument.Range(rs, re).Select
End Sub



Не получается выделить остальные колонки в последующих таблицах, содержащих заголовок "V"
...
Рейтинг: 0 / 0
Макрос выделения колонок в разных таблицах и замены значений
    #39149389
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ypmailНачиная с 5 таблицы и до конца документа
ypmail
Код: vbnet
1.
ActiveDocument.Tables(5)


Сначала убедитесь, что в коллекции Tables элементы сортированы именно по порядку отображения их в тексте. Я на самом деле не вижу пока гарантий, что Tables(5) - это именно пятая ПО ТЕКСТУ.
Доступ к последующим таблицам (если удастся доказать, что всё-таки положение при отображении и номер в коллекции коррелируют) легко обеспечивается обращением к Tables(i) с постепенным увеличением i и обработкой ошибки.
Поиск нужного заголовка можно выполнить как методом Find, так и простым сканированием Value ячеек первой строки таблицы. Зная номер таблицы и колонки, легко выделить всю колонку и применить к ней Replace.
...
Рейтинг: 0 / 0
Макрос выделения колонок в разных таблицах и замены значений
    #39149409
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaСначала убедитесь, что в коллекции Tables элементы сортированы именно по порядку отображения их в тексте. Я на самом деле не вижу пока гарантий, что Tables(5) - это именно пятая ПО ТЕКСТУ.
Задать поиск таблиц, первые колонки которых содержат заголовок "V"?
Дальше я уже завис...

Доступ к последующим таблицам (если удастся доказать, что всё-таки положение при отображении и номер в коллекции коррелируют) легко обеспечивается обращением к Tables(i) с постепенным увеличением i и обработкой ошибки.
Поиск нужного заголовка можно выполнить как методом Find, так и простым сканированием Value ячеек первой строки таблицы. Зная номер таблицы и колонки, легко выделить всю колонку и применить к ней Replace.
Tables(i) уже не подойдет, т.к. мы первым шагом уйдем от номеров таблиц.

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

Жаль, что нельзя указать сразу Tables(5, 6, 7, 8) разом выделить в них Column(1) и заменить текст в ячейках.
...
Рейтинг: 0 / 0
Макрос выделения колонок в разных таблицах и замены значений
    #39149564
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ypmail,
файл-пример приложите.
...
Рейтинг: 0 / 0
Макрос выделения колонок в разных таблицах и замены значений
    #39149594
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанскийypmail,
файл-пример приложите.
...
Рейтинг: 0 / 0
Макрос выделения колонок в разных таблицах и замены значений
    #39149644
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ypmail, пробуйте
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub ypmail()
Dim i&, j&, CE$, t As Table
  CE = Chr$(13) & Chr$(7) 'символы окончания текста ячейки
  For i = 5 To ActiveDocument.Tables.Count
    Set t = ActiveDocument.Tables(i)
    If ActiveDocument.Tables(i).Cell(1, 1).Range.Text = "V" & CE Then
      For j = 2 To t.Rows.Count
        If t.Cell(j, 1).Range.Text = "Да" & CE Then
          t.Cell(j, 1).Range.Text = "V"
        ElseIf t.Cell(j, 1).Range.Text = "Нет" & CE Then
          t.Cell(j, 1).Range.Text = ""
        End If
      Next
    End If
  Next
End Sub
...
Рейтинг: 0 / 0
Макрос выделения колонок в разных таблицах и замены значений
    #39149664
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанский,

Спасибо, всё работает!
Не подскажете, где почитать, чтобы понять, что означает каждая строка в этом коде?
...
Рейтинг: 0 / 0
Макрос выделения колонок в разных таблицах и замены значений
    #39149735
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ypmail,
можно Справку почитать - ставьте курсор в интересующее слово, напр. "For", "Cell" и нажимайте F1.
Или вот: http://www.cyberforum.ru/vba/thread432513.html
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос выделения колонок в разных таблицах и замены значений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]