2009-06-16 15 views
5

私は後でデータベースにエクスポートする必要がある約4000のフォームフィールドを含むWord文書を持っています。問題は4000フィールドのどれも「ブックマーク」フィールドに情報を持っていないので、それらに格納されている情報を得ることができないということです。現在の選択(VBA)を格納するWordマクロ

私はブックマーク(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 

をしかし、それは動作しません、Selectionオブジェクトは、For Eachループに変更されるため、その後それが唯一の選択の最初のフォームフィールドが含まれています。私は、このソリューションに来ることができました。

ここで私の質問ですが、現在の選択を保存し、変更した後にロードする方法があります。

私が試した:

Dim mySelection as Selection 
Set mySelection = Selection 
をしかし、私は選択を変更した場合、変数マイセレクトが(...非常に正常である)にも変更し、私は、オブジェクトのクローンを作成する方法を見つけることができませんでした。

誰かにこれを行う方法のアイデアはありますか?

おかげ

答えて

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 
関連する問題