Я думаю, что "извилистый и сюрреалистический" - заблуждение.
Создайте небольшую форму с раскрывающимся списком (например, с именем "selVarName"
), которая позволяет выбрать все доступные имена переменных документа. Свяжите форму с пользовательской кнопкой на панели быстрого доступа.
После нажатия «ОК» в этой форме сделайте что-то вроде этого:
Private Sub btnOK_Click()
Dim v As Word.Variable
Dim n As String
n = Me.selVarName.Value
With Selection
For Each v In .Document.Variables
If v.Name = n Then v.Delete: Exit For
Next v
.Document.Variables.Add n, .Range.Text
End With
End Sub
И это уже навороты. Вы можете выполнить дополнительную проверку, например, «текст не выделен».