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

Объектная модель Word основана на организации отдельных объектов в коллекции, к которым можно получить программный доступ. Это касается не только таблиц, но и абзацев, графики и множества других объектов.

Вы можете легко найти количество объектов в коллекции, используя свойство Count. Например, вы можете использовать следующее, чтобы узнать, сколько таблиц в документе, поскольку оно возвращает количество объектов в коллекции Tables:

iNumTables = ActiveDocument.Tables.Count

Найти текущую таблицу немного сложнее, но это можно сделать. Самый простой способ — добавить закладку к текущей таблице, а затем изучить все таблицы в документе, чтобы увидеть, какая таблица содержит эту закладку. Как только вы это узнаете, вы узнаете, какая таблица является текущей, и сможете удалить закладку. Следующий макрос реализует эти шаги:

Sub FindTableNumber()

Dim J As Integer     Dim iTableNum As Integer     Dim oTbl As Table

Selection.Bookmarks.Add ("TempBM")

For J = 1 To ActiveDocument.Tables.Count         Set oTbl = ActiveDocument.Tables(J)

oTbl.Select         If Selection.Bookmarks.Exists("TempBM") Then             iTableNum = J             Exit For         End If     Next J     ActiveDocument.Bookmarks("TempBM").Select     ActiveDocument.Bookmarks("TempBM").Delete     MsgBox "The current table is table " & iTableNum End Sub

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

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

Selection.Tables(1).Split(5)

Эта команда разбивает таблицу на строку 5; вы можете легко изменить точку разделения, изменив строку, в которой она разделена. Затем вы можете переместить точку вставки в начало следующей таблицы (только что созданной) с помощью следующей команды:

Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext

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

_Примечание: _

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

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (10897) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для пользователей старый интерфейс меню Word здесь:

link: / word-Index_Number_for_the_Active_Table [Номер индекса для активной таблицы].