Разрешение пользователю выделять текст в слове макрос vba - PullRequest
0 голосов
/ 02 апреля 2009

В VBA для Word 2007 я хочу иметь возможность открывать документ, выделять разделы текста и заменять эти разделы полями, связанными с переменными документа. Процесс будет:

  1. Открыть документ.
  2. Выберите текст.
  3. Выберите docvariable из списка.
  4. Вставить поле, связанное с выбранным docvariable.
  5. Повторите шаги 1-4 при необходимости.

Невозможно заранее узнать, что представляет собой текст, который нужно выбрать, или какую переменную документа будет связывать с каким полем или сколько раз эти шаги будут повторяться.

Только с Microsoft может быть настолько извилистой и сюрреалистичной самая фундаментальная и простая задача, позволяющая пользователю делать выбор во время выполнения и передавать этот выбор обратно в подпрограмму. Я потратил 2 дня, пытаясь понять это. Если кто-то может помочь, я назову моего следующего ребенка после вас.

1 Ответ

1 голос
/ 02 апреля 2009

Я думаю, что "извилистый и сюрреалистический" - заблуждение.

Создайте небольшую форму с раскрывающимся списком (например, с именем "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

И это уже навороты. Вы можете выполнить дополнительную проверку, например, «текст не выделен».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...