Макрос Word, сохраняющий текущий выбор (VBA)

У меня есть документ Word, содержащий около 4000 полей формы, которые я должен впоследствии экспортировать в базу данных. Дело в том, что ни одно из 4000 полей не имеет информации в поле «Закладка», поэтому я не могу получить информацию, хранящуюся в них.

Я пытаюсь создать макрос, чтобы помочь в процессе создания закладки (FormField.Name), но не могу сделать это правильно. Дело в том, что я хочу изменить имена FormFields, содержащиеся в выборе пользователя, и только их. Мне удалось прийти к такому решению:

Sub Macro2()
    Dim myFile As String
    Dim fnum As Integer
    Dim sFileText As String
    Dim currentField As FormField

    myFile = "c:	estMacro.txt"
    fnum = FreeFile()
    Open myFile For Input As fnum

    For Each currentField In Selection.FormFields
        Input #fnum, sFileText

        With currentField
            .StatusText = sFileText
            .OwnStatus = True
        End With

        currentField.Select
        Application.WordBasic.FormFieldOptions Name:=sFileText
    Next currentField
End Sub

Но это не работает, потому что объект Selection изменяется в цикле For Each, а затем он содержит только первый FormField для выбора.

Итак, вот мой вопрос: есть ли способ сохранить текущий выбор и загрузить его после его изменения.

Я пробовал :

Dim mySelection as Selection
Set mySelection = Selection

Но если я изменю Selection, переменная mySelection также изменится (что вполне нормально ...), и я не нашел способа клонировать объект.

У кого-то есть идея, как это сделать?

благодаря

vba,ms-word,word-vba,

5

Ответов: 2


10 принят

Используйте другую ссылку для своей «копии»:

Dim selBkUp As Range
Set selBkUp = ActiveDocument.Range(Selection.Range.Start, Selection.Range.End)

Или используйте дубликат:

Dim selBkUp As Range
selBkUp = Selection.Range.Duplicate

0

Selection.Range автоматически дублируется, поэтому вы можете просто сделать:

Dim selBkUp As Range
Set selBkUp = Selection.Range
VBA, мс слово, слово-УВА,
Похожие вопросы