Как найти переменные документа в MS Word без использования макроса

10

У меня есть документ с некоторыми переменными документа, и я пытаюсь использовать эти переменные в документе. Но так как переменные устанавливаются внешней системой (что не очень хорошо задокументировано), я играю в догадки. Я предполагаю, что существует переменная с «последней датой ревизии», и затем начинаю угадывать, как эта переменная могла быть вызвана.

Есть ли способ перечислить все переменные документа в документе MS Word и их значения, чтобы их можно было искать при использовании их в документе? (Я работаю над MS Office 2010)

какой-то пользователь
источник

Ответы:

13

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

В Word есть несколько мест, где вы можете найти некоторые типы свойств, но для истинных «переменных» и других типов свойств, если вы не можете использовать макросы или другой код, вам нужно будет разархивировать файл .docx и посмотрите на различные файлы там.

Места, которые вы можете посмотреть в Word 2010 (здесь не отображаются переменные документа) ...

а. В «Backstage» - посмотрите на вкладку «File», «Info», и вы увидите некоторые свойства, перечисленные справа. Нажмите «Показать все свойства» в нижней части списка, и вы можете увидеть больше.

б. На вкладке Вставка, группа Текст, Быстрые детали-> Свойства вы должны увидеть список «Встроенные свойства + некоторые или все свойства, вставленные Sharepoint, если это то, что вы используете.

с. В «Информационной панели документа» (DIP). Если вы этого не видите, перейдите в меню «Файл», затем «Параметры», а затем, скажем, «Панель быстрого доступа». Выберите «Выбрать команды» в разделе «Все команды», затем найдите «Свойства», выберите его и нажмите кнопку «Добавить». Вы должны увидеть значок на панели быстрого доступа, который имеет маленькое белое «i» на круглом синем фоне. Нажмите на нее, и вы увидите либо некоторые встроенные свойства (Автор, Заголовок и т. Д.), Либо некоторые свойства «Тип контента» Sharepoint, если вы используете SharePoint. Вы можете переключаться между одним из нескольких представлений. Если затем щелкнуть раскрывающийся список в верхнем левом углу DIP и выбрать «Дополнительные свойства», вы увидите диалоговое окно с несколькими вкладками, в котором отображается

  • некоторые "встроенные" свойства

  • "пользовательские" свойства старого стиля "Пользовательский".

Для всего остального вам, вероятно, придется искать в XML в .docx. Для этого сделайте копию вашего документа. Допустим, копия называется mydoc.docx. Переименуйте его в mydoc.docx.zip, откройте zip, затем найдите несколько вещей, как предложено ниже ...

а. Истинные переменные документа хранятся в папке word, в файле settings.xml, в элементе с именем w: docVars. Вы должны увидеть имя и значение для каждой переменной. Вы можете вставить значения переменных документа в ваш документ, используя поле {DOCVARIABLE variablename}.

б. Встроенные свойства документа, в том числе такие, как автор, заголовок и т. Д. В большинстве случаев значения могут быть вставлены в документ с использованием специальных полей, таких как {AUTHOR} или, в некоторых случаях, полей {DOCPROPERTY}. Хотя это немного грязно, есть стандартный список имен. Вы можете найти большинство значений в папке docProps в файлах core.xml и app.xml. Однако некоторые («Свойства титульной страницы»), если они используются, хранятся в одном из файлов «item.xml» (например, «item1.xml» в папке customXml).

с. «определяемые пользователем» пользовательские свойства старого стиля, которые состоят в основном из пар имя / значение, значения которых можно вставить в документ с помощью полей {DOCPROPERTY}, например, {DOCPROPERTY mycustomproperty}. Они отображаются в диалоговом окне Дополнительные свойства ...., но в .docx они находятся в файле custom.xml в папке docProps.

д. пользовательские свойства нового стиля, также известные как «свойства Sharepoint» или «свойства типа содержимого», поскольку они часто создаются и заполняются из столбцов в списке Sharepoint. Значения хранятся в «Пользовательских частях XML» и могут быть вставлены с использованием элементов управления контентом, которые были настроены так, чтобы указывать на соответствующий бит XML. (Только Word 2007 и более поздние версии). В .docx вы найдете несколько «схем» для этих переменных и значения переменных в папке customXML, в файлах с именем «item1.xml», «item2.xml» и т. Д.

е. наконец, любой разработчик может поместить свои собственные пользовательские части XML в документ Word и подключить элементы управления контентом к элементам и атрибутам в этих пользовательских частях XML. Я не буду пытаться вдаваться в детали того, как это делается, но вы найдете данные в файлах item1.xml, item2.xml и т. Д. В customXML. Однако, чтобы найти сами элементы управления контентом, их имена и то, с чем они связаны, вам, как правило, нужно искать в папке word, например, document.xml, и, возможно, один или несколько из «header» и «footer». XML-файлы.

Крис
источник
Отличный ответ. Спасибо! Одно примечание: «б. На вкладке« Вставка »,« Текстовая группа »,« Быстрые детали-> Свойства », вы должны увидеть список« Встроенные свойства + некоторые или все свойства, вставленные Sharepoint, если это то, что вы используете ». В моей настройке У Quick Parts, похоже, нет «Свойства»
некий пользователь
Моя ошибка - это должны быть Quick Parts-> Свойство документа
Свойства и DocVariables выглядят довольно похоже на то, как вы можете использовать их в полях слов и VBA. Есть ли компромиссы?
BenPen
5

У меня была похожая проблема. Произошел сбой какого-то стороннего набора инструментов, и мне нужно было установить значение переменной.

Это немного грубо, но вот некоторый код VBA, который я добавил, который перечислит все переменные в ActiveDocument.Variablesколлекции;

Public Sub ListAllVariables()
    Dim V As Variable, S As String
    For Each V In ActiveDocument.Variables
        S = S & V.Name & vbTab & V.Value & vbNewLine
    Next V
    MsgBox S
End Sub

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

ActiveDocument.Variables("MyVariable") = "Value"
Steztric
источник
2
Это довольно круто, спасибо. Очень жаль, что Microsoft не предоставила предварительно упакованное окно выбора вида, которое вы предоставляете ему коллекцию, и у вас появляется всплывающее окно с двумя столбцами, которое позволяет выбрать один или несколько элементов из коллекции (или добавить новое значение в фактической коллекции), а затем позволяет вашему коду VBA получить доступ к выбранным элементам в вызывающей подпрограмме / функции.
BenPen