استیو اسنادی را ایجاد میکند که نیاز به ذکر نام فایل سند در سرصفحه و زیرنویسهای قانونی در صفحات اول و دوم سند دارند. او یک ماکرو ایجاد کرده است که پس از تایپ نام فایل در عنوان، کپی میکند. آن را در قسمت های فرم متنی در زیرنویس ها در مکان های مناسب قرار می دهد. مرحله بعدی مونتاژ سند او ذخیره سند با استفاده از دستور "Save As" است. سند باید با استفاده از همان نام فایل وارد شده در سربرگ ذخیره شود. و زیرنویس ها
هنگامی که این کار را به صورت دستی انجام می دهید، استیو کادر محاوره ای Save As را نمایش می دهد، نام فایل را در آن قرار می دهد، سپس روی Save کلیک می کند. او سعی کرده است کد ماکرو را برای افزودن این مرحله "Save As" ایجاد کند، اما نمی تواند نحوه انجام آن را بیابد. هنگامی که Word مراحل دستی را ضبط می کند، استیو چیزی شبیه به زیر دریافت می کند:
ActiveDocument.SaveAs FileName:="04562.sw.docx
این نشان میدهد که Word نام فایل خاصی را که هنگام انجام مراحل دستی استفاده میشود، ضبط میکند، اما استیو میخواهد از نام فایل دیگری بر اساس آنچه در هدر سند است استفاده کند. زمانی که ماکرو اجرا میشود، این اطلاعات (نام فایل) در کلیپبورد وجود دارد، بنابراین میتوان اطلاعات را از کلیپبورد نیز دریافت کرد، اما استیو نیز از نحوه انجام این کار غافل است.
از آنجایی که استیو قبلاً یک ماکرو برای کپی نام فایل دارد و از آن ماکرو راضی است، فقط باید چند تغییر در کد او انجام داد تا فایل با استفاده از نام مناسب ذخیره شود. کد زیر را به مکان های مناسب در ماکرو موجود خود اضافه کنید:
Dim strTemp As String
Dim MyData As DataObject
Set MyData = New DataObject
MyData.GetFromClipboard
strTemp = MyData.GetText(1)
ActiveDocument.SaveAs FileName:=Trim(strTemp) & ".docx"
تا زمانی که یک رشته متن در کلیپ بورد دارید که می خواهید برای نام فایل خود استفاده کنید، این کد باید کار کند. حتی پسوند .Doc را به انتهای رشته در کلیپ بورد اضافه می کند. این کد مستلزم آن است که یک مرجع برای فرم های Microsoft در ویرایشگر VBA تنظیم کنید. (از منوی ابزار در ویرایشگر، References را انتخاب کنید.)
البته باید به این نکته اشاره کرد که شاید بخواهید در رویکرد خود نسبت به این کلان تجدید نظر کنید. در واقع، اگر رویکردی کاملا متفاوت داشته باشید، ممکن است بتوانید از شر اکثر کدهای خود خلاص شوید. برای مثال، میتوانید از افراد بخواهید ابتدا سند را ذخیره کنند و سپس با استفاده از فیلدها، نام فایل را در خود سند ارجاع دهند. (برای این منظور می توان از فیلد FILENAME استفاده کرد.)
به جای استفاده از ماکرو برای کپی کردن نام فایل در صفحات اول و دوم سند، می توانید از یک سبک تعریف شده (مانند DocTitle یا DocName) برای اشاره به نام فایل خود استفاده کنید و سپس از فیلد STYLEREF در جای دیگری از سند خود استفاده کنید. سندی برای ارجاع به آن نام به این ترتیب فقط یک بار باید وارد شود و ماکرو لازم نیست. در این صفحه در سایت Word MVP میتوانید چندین روش برای تکرار دادهها در مناطق مختلف سند پیدا کنید:
http://gregmaxey.mvps.org/Repeating_Data.htm
همچنین می توانید یک UserForm برای جمع آوری داده ها از کاربر (برای دریافت نام فایل مورد نظر) ایجاد کنید و سپس سند را با آن نام ذخیره کنید. سپس ماکرو میتواند نام فایل را به فیلد TITLE اختصاص دهد و در هر جایی از سند که به فیلد TITLE اشاره میکند، بهطور خودکار نام فایلی را که کاربر وارد کرده است نشان میدهد.