Пользовательская форма в Word для изменения переменных - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь автоматизировать файл Word с помощью пользовательской формы.

Я думал о том, чтобы иметь некоторые переменные в файле Word и поместить кнопку на ленте, которая открывает пользовательскую форму для ввода этих значений.

Я следовал некоторому учебнику, который нашел в Интернете, и у меня появляется следующий код, когда я нажимаю OK на пользовательской форме:

Private Sub cmdOK_Click()

Set oVars = ActiveDocument.Variables
Hide

oVars(RfQ).Value = TextBox1.Value
oVars(SFDC).Value = TextBox2.Value
ActiveDocument.Fields.Update
Unload.Me

End Sub

Я получаю ошибку

"Скомпилировать Ошибка, переменная не определена ".

В моем тексте у меня есть следующее: {DOCVARIABLE SFD C * MERGEFORMAT}

Моя цель - заполнить переменные со значением, которое я ввожу в пользовательскую форму.

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

1 Ответ

0 голосов
/ 18 марта 2020

В первый раз вам нужно будет добавить переменную, например:

oVars.Add "RfQ", TextBox1.Value

Как только она будет создана, вы можете изменить ее следующим образом:

oVars("RfQ") = TextBox1.Value

Обновление после вопросов в комментариях
В вашем примере вы написали oVars(RfQ).Value. Это означает «Возьмите переменную документа с именем, хранящимся в переменной vba RfQ». Я предполагаю, что это не то, что вам нужно.
Я предполагаю, что переменная документа называется RfQ, и вы хотите использовать это как жестко заданное имя для переменной. В этом случае добавьте кавычки к имени переменной документа, например:

oVars("RfQ").Value = TextBox1.Value

Поскольку у вас не было кавычек, вы ввели новую неявную переменную vba с именем RfQ без значения. Это дало эффект, что вы пытались прочитать переменную документа с пустым именем. Если вы поставите Option Explicit в верхней части вашего модуля, вы будете защищены от подобных проблем.

...