2009-04-02 7 views
0

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

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

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

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

+0

Хотя я не знаю, как исправить вашу проблему, я понимаю «извилистый и сюрреалистический». –

ответ

1

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

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

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

+0

Проблема у меня есть с объектом выбора. Все, что я могу найти, похоже, требует, чтобы текст был уже выбран или полагался на поиск документа внутри макроса. Мне нужна программа, которая предложит пользователю сделать выбор во время выполнения, выделив текст. Как мне это сделать? – david

+0

Что не так, если пользователь может выбрать текст и нажать кнопку после этого? Наверное, я до сих пор не понимаю, что вы пытаетесь сделать, но я чувствую, что * путь * вы пытаетесь это сделать, может быть неправильным. – Tomalak

+0

Объект выбора по определению выбран в данный момент! Я согласен с @Tomalak, сделаю выбор, выберем варианты в форме и нажмите ОК, чтобы обработать то, что вы только что выбрали. –

Смежные вопросы