2009-06-16 17 views
5

भंडारण मैं एक Word दस्तावेज़ है कि जो मैं एक डेटाबेस के लिए बाद में निर्यात करने के लिए है के बारे में 4000 प्रपत्र फ़ील्ड्स शामिल है। मामला यह है कि 4000 फ़ील्ड में से कोई भी "बुकमार्क" फ़ील्ड में कोई जानकारी नहीं है, इस प्रकार मुझे उन में संग्रहीत जानकारी नहीं मिल सकती है।वर्ड मैक्रो, वर्तमान चयन (VBA)

मैं एक मैक्रो बुकमार्क (FormField.Name) लिखने की प्रक्रिया में मदद करने के बनाने के लिए कोशिश कर रहा हूँ, लेकिन यह सही करने के लिए प्रबंधन नहीं कर सकते। मामला यह है कि मैं उपयोगकर्ता के चयन में निहित फॉर्मफिल्ड्स के नाम बदलना चाहता हूं, और केवल उन्हें ही। क्योंकि चुनाव वस्तु में बदल गया है प्रत्येक पाश के लिए,

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 

लेकिन यह काम नहीं करता है और बाद में यह केवल चयन के पहले 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