ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
21 visibility
موضوع: آفیس توسط:
استفان پرسید که آیا امکان کنترل فرمت ارجاعات متقابل درج شده توسط Word وجود دارد یا خیر. هنگامی که او یک برچسب و عدد مانند جدول 1 یا شکل 12 را درج می کند، برچسب را با حروف کوچک (جدول، شکل) و یک فاصله بدون شکست بین برچسب و عدد می خواهد.
هیچ راهی برای کنترل این نوع قالب بندی ارجاع متقابل در Word وجود ندارد. بدیهی است که می توانید پس از قرار دادن ارجاعات متقابل آنها را به صورت دستی تغییر دهید، اما هر زمان که فیلدها را به روز کنید، فرمت اصلی انتخاب شده Word برای آنها استفاده می شود. چند راه حل مبتنی بر کلان وجود دارد که می توانید امتحان کنید. راه حل اول کدهای فیلد واقعی مورد استفاده برای فیلد را تغییر می دهد:
Sub FieldRefChanges1() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then add format switch with lowercase option to field codes oFld.Code.Text = oFld.Code.Text & "* lower " updates the field results to display the new format oFld.Update End If Next oFld Next oStoryRng End Sub</blockquote>
ماکرو شامل چند حلقه For تو در تو است. اولی از هر داستان در سند عبور می کند و دومی از هر قسمت در هر داستان عبور می کند. سپس برای اطمینان از اینکه فیلد یک فیلد REF است (نوعی که برای ارجاعات متقابل استفاده می شود) و نتیجه فیلد دو کلمه یا کمتر است (مانند جدول 1 یا شکل 12) از عبارت If استفاده می شود.
اگر این معیارها برآورده شوند، ماکرو تغییری در کد فیلد واقعی ایجاد می کند و سوئیچ را اضافه می کند که منجر به نمایش فیلد با حروف کوچک می شود.
این ماکرو چند اشکال دارد. ابتدا، اگر چندین بار آن را اجرا کنید، سوئیچ پایین * چندین بار به فیلدهای REF اضافه می شود. دوم، ماکرو فضای موجود در نتایج فیلد را به یک فضای بدون شکست تغییر نمی دهد.
برای غلبه بر هر دو مشکل، فقط ماکرو را طوری تغییر دهید که فرآیند دستی را که برای تغییر نتایج ماکرو طی می کنید، خودکار کند.
Sub FieldRefChanges2() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field Dim sTemp As String Dim J As String For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then sTemp = oFld.Result.Text sTemp = LCase(sTemp) J = InStr(sTemp, " ") sTemp = Left(sTemp, J - 1) & Chr(160) & _ Mid(sTemp, J + 1, Len(sTemp) - J) oFld.Result.Text = sTemp End If Next oFld Next oStoryRng End Sub</blockquote>
این ماکرو اساساً مانند ماکرو قبلی است، با این تفاوت که دقیقاً با متن نتیجه فیلد کار می کند. متن به متغیر sTemp اختصاص داده می شود که سپس به حروف کوچک تبدیل می شود. موقعیت فضا مشخص می شود و با فضایی بدون شکست جایگزین می شود. سپس نتیجه دوباره در متن نتیجه فیلد قرار می گیرد.
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 31 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 23 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 21 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 35 visibility

25.1k سوال

10.4k پاسخ

614 دیدگاه

11.2k کاربر

390 نفر آنلاین
1 عضو و 389 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 23289
بازدید دیروز: 42465
بازدید کل: 20456492
...