Word به شما اجازه می دهد تا فرم های ویژه ای ایجاد کنید که بر روی فیلدهایی برای جمع آوری اطلاعات تکیه دارند. این فرم ها را می توان محافظت کرد تا متن خارج از فیلدهای فرم توسط کاربران قابل تغییر نباشد. مسائل دیگر از
روش هایی را که در آن فرم ها ایجاد می شود مورد بحث قرار داده اند.
هنگامی که یک فرم ایجاد می کنید، ممکن است لازم باشد Word محتویات فیلدهای محاسبه شده را در فرم به روز کند. اگر در گزینههای نمایش کادر محاورهای گزینههای Word، کادر بهروزرسانی فیلدها قبل از چاپ را انتخاب کنید، هنگام چاپ یک سند، فیلدها بهطور خودکار محاسبه میشوند. اما اگر نخواهید کل سند و کاغذ باطله را چاپ کنید فقط برای اینکه ببینید نتیجه محاسبات چیست، چه؟
راه حل این است که یک ماکرو ساده ایجاد کنید و ماکرو را به نوار ابزار دسترسی سریع اختصاص دهید. ماکرو زیر به خوبی انجام خواهد داد:
Sub UpdateFields() Dim rngStory As Range For Each rngStory In ActiveDocument.StoryRanges rngStory.Fields.Update Next rngStory End Sub
مهم است که ماکرو به نوار ابزار دسترسی سریع اضافه شود زیرا یک فرم محافظت شده اجازه دسترسی به ماکروها را به روش های دیگر نمی دهد.
البته این رویکرد مستلزم آن است که کاربر به خاطر داشته باشد که روی دکمه کلیک کند تا همه فیلدها به روز شوند. اگر ترجیح می دهید، می توانید ماکرو را به رویداد OnExit هر فیلد فرمی اختصاص دهید. بنابراین، هر زمان که فیلد "خروج" شد، ماکرو اجرا می شود. یکی
مشترک همچنین ماکرو زیر را به عنوان یک ماکرو OneExit برای به روز رسانی فیلدها پیشنهاد کرد:
Sub UpdateRefsInForm() Application.ScreenUpdating = False If ActiveWindow.View.Type = wdPrintView Then ActiveWindow.ActivePane.View.Type = wdNormalView Else ActiveWindow.View.Type = wdPrintView End If If ActiveWindow.ActivePane.View.Type = wdNormalView Then ActiveWindow.ActivePane.View.Type = wdPrintView Else ActiveWindow.ActivePane.View.Type = wdNormalView End If End Sub
این ماکرو بسیار هوشمندانه است، زیرا تنها کاری که انجام میدهد این است که از هر نمایی که در آن هستید (نمای طرحبندی پیشنویس/عادی یا چاپ) به نمای دیگر و سپس دوباره برمیگردید. این تغییر در حالت نمایش، Word را مجبور می کند تا فیلدها را به روز کند.