آیلین با اسناد زیادی کار می کند که تاریخ آنها به صورت عددی است، مانند 9/22/12. او باید این تاریخها را به فرمت دیگری تبدیل کند، بهویژه 22 سپتامبر 2012. او نمیداند که آیا راه آسانی برای ایجاد تغییر بدون نیاز به تایپ مجدد هر تاریخ وجود دارد.
پاسخ تا حد زیادی به ماهیت تاریخی که در حال تغییر هستید بستگی دارد. تاریخ ها در یک سند Word می توانند متن مستقیم یا فیلد باشند. شما می توانید با جابجایی نقطه درج در جایی در داخل تاریخ متوجه شوید که آیا تاریخ یک فیلد است. اگر یک فیلد است، پس از اینکه نقطه درج در تاریخ قرار گرفت، کل تاریخ باید به رنگ خاکستری روشن باشد.
اگر تاریخ یک فیلد است، میتوانید روی تاریخ کلیک راست کرده و از منوی زمینه، Edit Field را انتخاب کنید. سپس می توانید فیلد را تغییر دهید، از جمله انتخاب یک قالب تاریخ متفاوت در لیست ویژگی های فیلد.
اگر تاریخ متن معمولی است (نه فیلد)، پس باید به دنبال راه حل دیگری باشید. می توان سند را مرور کرد و تمام تاریخ ها را به صورت دستی تایپ کرد، اما آیلین قبلاً متوجه شده بود که چنین رویکردی خسته کننده است. اینجاست که یک ماکرو میتواند مفید باشد: رفع خستگی با انجام برنامهای کاری که در غیر این صورت با دست انجام میدادید.
ماکرو زیر از طریق یک سند عبور میکند و همه تاریخها را در قالب m/d/yyyy جستجو میکند. (می تواند یک یا دو رقم برای ماه یا روز وجود داشته باشد، اما باید چهار رقمی برای سال باشد.) اگر تاریخی مطابق با این الگو پیدا شد، به فرمت mmmm d، yyyy تبدیل می شود.
Sub GetDateAndReplace()
Dim FoundOne As Boolean
Selection.HomeKey Unit:=wdStory, Extend:=wdMove
FoundOne = True " loop at least once
Do While FoundOne " loop until no date is found
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "([0-9]{1,2})[/]([0-9]{1,2})[/]([0-9]{4})"
.Format = True
.Forward = True
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceNone
" check the find to be sure it"s a date
If IsDate(Selection.Text) Then
Selection.Text = Format(Selection.Text, "mmmm d, yyyy")
Selection.Collapse wdCollapseEnd
Else " not a date - end loop
FoundOne = False
End If
Loop
End Sub