Word宏,存储当前选择(VBA)

Gim*_*mly 5 vba ms-word 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:\testMacro.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
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为在For Each循环中更改了Selection对象,之后它只包含选择的第一个FormField.

所以这是我的问题,有没有办法保存当前选择并在更改后加载它.

我试过了 :

Dim mySelection as Selection
Set mySelection = Selection
Run Code Online (Sandbox Code Playgroud)

但是如果我改变了Selection,变量mySelection也会改变(这很正常......)而且我没有找到任何克隆对象的方法.

有人知道如何做到这一点?

谢谢

gui*_*ooo 10

为"副本"使用不同的参考:

Dim selBkUp As Range
Set selBkUp = ActiveDocument.Range(Selection.Range.Start, Selection.Range.End)
Run Code Online (Sandbox Code Playgroud)

或者使用副本:

Dim selBkUp As Range
selBkUp = Selection.Range.Duplicate
Run Code Online (Sandbox Code Playgroud)