جنیفر برای یافتن رشته ای که با نقل قول های هوشمند یا مستقیم (یا ترکیبی از این دو) احاطه شده است، به راهی نیاز دارد. به نظر می رسد که او نمی تواند ترکیب مناسبی از دستورات را برای متد Find پیدا کند تا بتواند همه نمونه های چنین متنی را در همه نسخه های Word پیدا کند.
این مهم است که در مورد آنچه جستجو می شود واضح باشد. فرضیه در این نکته این است که ماکرو شما باید a را جستجو کنید
specific
رشته ای که توسط نقل قول احاطه شده است، نه
any
رشته ای که توسط نقل قول احاطه شده است. به عنوان مثال، در سندی که شامل دو رشته نقل قول شده مانند «متن نقل قول من» و «متن نقل قول بیشتر» است، شما فقط میخواهید یکی از رشتههایی را که متن آن را میدانید، زودتر پیدا کنید، نه هر دو رشته را پیدا کنید. .
در این مورد، همانطور که اشاره کردید، استفاده از روش Find خوب است. سوال این است که چگونه می توان امکان نقل قول های هوشمند و نقل قول های مستقیم را در آنچه به دنبال آن هستید، تطبیق داد. خوشبختانه، روش Find، به طور پیشفرض، هر دو نقل قول مستقیم و هوشمند را به جای هم مطابقت میدهد. نکته کلیدی این است که بدانید چگونه مشخص کنید که میخواهید علامت نقل قول در جستجو گنجانده شود. قطعه کد زیر باید این کار را انجام دهد:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """my quoted text""" .Format = False .MatchWildcards = False End With Selection.Find.Execute
کلید این کد نحوه تخصیص اطلاعات به ویژگی متن است. توجه داشته باشید که هر چیزی که به دنبال آن هستید (در این مورد، "متن نقل قول من") با سه نقل قول در هر طرف احاطه شده است. دلیل این امر نسبتاً محرمانه است: رشته ای که در جستجوی آن هستید باید با علامت نقل قول محصور شود. این مورد نیاز VBA است. این در اینجا نشان داده شده است:
"my quoted text"
از آنجایی که میخواهید یک کاراکتر نقلقول واقعی در ابتدای چیزی که به دنبال آن هستید، داشته باشید، باید یک علامت نقل قول دوم را بهعنوان «محدودکننده» اضافه کنید تا نشان دهد که میخواهید کاراکتر نقلقول را پیدا کنید. این بدان معناست که اکنون سه علامت نقل قول در ابتدا وجود دارد:
"""my quoted text"
همان تکنیک اضافی نقل قول بهعنوان جداکننده در انتهای رشته نیز اعمال میشود، بنابراین به آنچه در قطعه کد نشان داده شده است، میرسید. هنگامی که کد اجرا می شود، Word با وظیفه شناسی رشته ای را پیدا می کند که توسط هر ترکیبی از نقل قول های مستقیم یا هوشمند احاطه شده است.
همچنین لازم به ذکر است که این رویکرد تنها در صورتی کار می کند که در حال انجام جستجوی منظم باشید، با ویژگی MatchWildcards که روی False تنظیم شده باشد.