VBA में वर्ड का पता / बदलें मोडल


1

मैं ढूँढें / बदलें संवाद तैयार करना और दिखाना चाहता हूं। हालाँकि, निम्न कोड एक मोडल स्थिति में संवाद दिखाता है, और आप दस्तावेज़ पाठ को प्राप्त नहीं कर सकते।

किसी भी विचार यह कैसे मॉडल बनाते हैं, जैसे आप Ctl-H से प्राप्त करते हैं?

Public Sub AutoFind()
    On Error GoTo myErrorHandler

    Selection.HomeKey Unit:=wdStory

    Dim theDialog As dialog
    Set theDialog = Application.Dialogs(wdDialogEditReplace)
    theDialog.Find = "the"
    theDialog.replace = "an"

    theDialog.Show
End Sub

जवाबों:


2

ऐसा लगता है कि डिजाइन के अनुसार मोडल एकमात्र व्यवहार है, लेकिन एक काम है-

CommandBars.FindControl(ID).Execute

उचित आईडी के साथ, यह संवाद खोलने के लिए अपने माउस के साथ बटन को हिट करने के लिए अनुरूप है।

मैंने इसे v2010 में काम करने की पुष्टि करने के अलावा कभी भी इसका इस्तेमाल नहीं किया है, और मेरी वृत्ति कहती है कि आईडी नंबर की पुष्टि करने या इसे प्राप्त करने का एक तरीका खोजना चाहिए (या शायद कोई निरंतर उपयोग कर सकता है) क्योंकि यह एक कठिन-कोडित "जादू" है संख्या "जो कि संस्करण से संस्करण में बदल सकती है।

वर्ड 2010 में, जो मेरे पास है, "फाइंड" आईडी है: = 141, "रिप्लेसमेंट" आईडी है: = 313।

तो आप एक "प्रोग्रामेटिक" खोज सेट कर सकते हैं, और फिर डायलॉग खोलने के लिए उपरोक्त कमांडबर्स विधि का उपयोग कर सकते हैं। यह जिस तरह से आप चाहते हैं, उस तरह से आबाद होना चाहिए और गैर-आधुनिक होना चाहिए।

Sub TestMacro()
Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "test find field"
        .Replacement.Text = "test replace field"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

    CommandBars.FindControl(ID:=313).Execute
end sub

बेशक, गैर-मोडल का मतलब कोड निष्पादन भी तुरंत होता है।


0

यह मेरा घिनौना उपाय था:

SendKeys "^h"   ' Hack to obtain "Dialogs(wdDialogEditReplace).Show" modelessly.
' MS Disclaimer: SendKeys is unreliable as to there being no certainty as to where focus is when called.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.