2009-06-16 71 views
5

我有一个Word文档,其中包含大约4000个表单域,我必须将其导出到数据库。问题在于4000个字段中没有一个在“书签”字段中有信息,因此我无法获取存储在其中的信息。Word宏,存储当前选择(VBA)

我试图创建一个宏来帮助写书签(FormField.Name)的过程,但无法设法做到这一点。问题是我想更改用户选择中包含的FormField的名称,只有它们。我已经成功地得出这样的解决方案:

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 

但它不工作,因为选择对象在改变For Each循环,之后它仅包含选择的第一个FormField。

所以这里是我的问题,有没有一种方法来保存当前的选择并在改变它之后加载它。

我已经试过:

Dim mySelection as Selection 
Set mySelection = Selection 

但是,如果我改变选择,可变mySelection改变,以及(这是很正常的......),我没有发现任何方式克隆对象。

有人有关于如何做到这一点的想法?

感谢

回答

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