Я хотел бы реализовать следующую функциональность в своих отчетах MS Word. Не уверен, как это возможно и возможно ли это вообще.
Вот изображение, которое я имею в виду, для справки:
- В начале отчета включите таблицу входных данных, содержащую все параметры.
- По всему содержанию отчета настройте поля, которые будут меняться при изменении входных данных в таблице.
- Пример: ПАРАМЕТР 1 установлен на 100, все ПАРАМЕТРЫ 1 в разделе «Содержимое» автоматически изменятся на 100.
Спасибо
решение1
Я думаю, вам нужно реализовать это требование с помощью VBA.
Откройте консоль VBA: нажмите «Alt + F11».
Вот макрос, сгенерированный при записи экрана, на который вы можете ссылаться:
Sub Macro5()
Selection.TypeText Text:="100"
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "parameter1"
.Replacement.Text = "100"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.TypeText Text:="200"
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "parameter2"
.Replacement.Text = "200"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.TypeText Text:="300"
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "parameter3"
.Replacement.Text = "300"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Для управления значением переменной вам нужно изменить только следующие два параметра:
Тип Текст Текст:="XX" Замена.Текст = "XX"
решение2
Думаю, я нашел способ, который довольно близок к тому, что вам нужно, однако вместо таблицы в документе вам придется использовать Дополнительные свойства документа.
Вот шаги с нуля (для последней версии Word для Windows):
- Создать новый документ
- Перейдите в Файл ➡ Свойства (вверху справа) ➡ Дополнительные свойства:
- Затем в появившемся окне перейдите на вкладку «Пользовательский».
- Здесь вы можете создать пользовательские свойства документа, которые можно использовать для хранения значений параметров, как показано в следующем GIF-изображении (извините за опечатку):
Теперь вернитесь к документу. Там вы можете использоватьполевые кодыдля отображения свойств документа.
Самый простой — перейти в то место, где вы хотите разместить текст параметра, нажать CTRL+ F9, ввести текст
DOCPROPERTY parameter_name \* MERGEFORMAT
и нажать , F9чтобы обновить все коды полей в документе (включая тот, который вы только что создали):
- Повторите это в каждом месте, где вы хотите, чтобы отображались параметры.
Чтобы изменить значение параметра во всем документе, обновите его в дополнительных свойствах (шаг 2-3), вернитесь в документ и обновите все коды полей, нажав F9.
Вот короткая демонстрация: