2009-06-16 61 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