
Я использую Excel AddIn для заполнения данных из таблицы Excel в документе Word. Данные попадают в разные таблицы Word в документе. Таблица, в которую попадает определенное подмножество данных, определяется значением в столбце «target» в таблице Excel.
До сих пор существовала статическая связь между значением целевого столбца и порядком целевых таблиц, например, все, что имеет букву «А», помещается в первую таблицу документа Word, все, что имеет букву «В», помещается во вторую и т. д.
Теперь пользователи Word проявляют креативность, переупорядочивая таблицы, удаляя таблицы, добавляя новые таблицы в целях стилизации, ... - короче говоря, связь «все, что относится к «А», помещается в первую найденную таблицу» больше не может быть гарантирована.
Есть ли способ задать уникальный идентификатор для таблицы Word через пользовательский интерфейс Word (я хочу, чтобы пользователи делали это самостоятельно, без необходимости прибегать к каким-либо макросам или надстройкам), который я затем мог бы использовать в качестве идентификатора для поиска наиболее вероятной целевой таблицы из макроса Excel?
решение1
Нет никакихстолсвойства в Word, которые должны быть уникальными, за исключением индекса (и, возможно ID
, , но только если документ сохранен как веб-страница).
Я бы предложил использовать свойство таблицы Title
. Пользователи могут установить это с помощью:
щелкните правой кнопкой мыши таблицу > Свойства таблицы > Альтернативный текст > Заголовок
И вы можете получить доступ к свойству программно, например (пример VBA):
Word.ActiveDocument.Tables.Item(1).Title
Вы можете перебрать всю коллекцию, чтобы найти правильную Tables
таблицу .Title
решение2
Если онодолжно бытьуникальное имя, единственная опция, которую можно использовать без включения функций, обычно скрытых в меню «Разработчик», — это назначение закладки каждой таблице.
Последовательным способом сделать это было бы выбрать таблицу с помощью ее поля выбора и использовать Вставка->Ссылки->Закладка, чтобы указать имя. Но проблема в том, что Word не предупреждает пользователя, когда он повторно использует закладку, а просто перемещает закладку. Так что без макросов и т. д., (a) пользователь может указать любое имя закладки, и это может нарушить что-то еще в документе, например перекрестную ссылку, и (b) если он укажет имя закладки, которая идентифицирует другую таблицу, эта таблица потеряет свою закладку — заметит ли это пользователь? Как пользователь найдет эту незакрепленную таблицу после перемещения закладки?
Проблему нарушения других элементов документа можно уменьшить или полностью устранить, используя соглашение об именовании, например «начинайте каждое имя закладки таблицы с tbl_
или tab_
».