در حالی که می توان با استفاده از روش ارائه شده در نکته قبلی، یک ماکرو VBA را از یک ماکرو دیگر اجرا کرد، اما مواقعی وجود دارد که چنین رویکردی کار را انجام نمی دهد. در عوض، باید به دنبال راه حلی باشید که امکان شکست را فراهم کند. -روش ایمن اجرای یک ماکرو. یک روش استفاده از دستور Call در VBA است. قبل از اینکه بتوانید از دستور استفاده کنید، باید یک مرجع پروژه به پروژه فراخوانی اضافه کنید. ماژولهای VBA، فرمها و غیره در یک الگو. برای مثال، VBA به الگوی Normal به عنوان پروژه "Normal" اشاره میکند.) ارجاعات بین پروژهها یک پیوند تعریف شده بدون ابهام بین پروژه فراخوانی و پروژه فراخوانی ارائه میدهند.
به عنوان مثال، اجازه دهید بگوییم که ماکرو MyMacro (ماکرویی که میخواستید اجرا کنید) بخشی از قالب CoolDoc بود. برای استفاده صحیح از Call در VBA، باید یک مرجع به پروژه CoolDoc.dotm به ماکرو اضافه کنید. متأسفانه، گفتن این کار کمی ساده تر از انجام آن است، زیرا به دلیل وجود یک "gottcha" بالقوه در VBA: به غیر از پروژه "Normal"، VBA به همه پروژه های قالب ایجاد شده توسط کاربر نام پیش فرض پروژه "TemplateProject" را می دهد. میتواند مشکلاتی ایجاد کند، زیرا داشتن یک نام پروژه منحصربهفرد برای زمانی که میخواهید در مورد ماکرو اجرا شود، بهترین است. برای دادن نام پروژه منحصر به فرد به CoolDoc.dotm، این مراحل را دنبال کنید:
- مطمئن شوید که قالب CoolDoc.dotm باز است.
- ویرایشگر VBA را با فشار دادن Alt+F11 نمایش دهید .
- در پنجره Project در سمت چپ بالای ویرایشگر VBA، روی پوشه مربوط به الگو کلیک راست کنید. از آنجایی که CoolDoc یک الگو است، پوشه TemplateProject (CoolDoc) نام دارد. Word یک منوی زمینه را نمایش می دهد.
- از منوی Context گزینه TemplateProject Properties را انتخاب کنید. کادر محاوره ای Properties نمایش داده می شود.
- در قسمت Project Name یک نام مناسب برای پروژه خود وارد کنید. (CoolDoc تا زمانی که منحصر به فرد باشد نام خوبی خواهد بود.)
- روی OK کلیک کنید. کادر محاوره ای ناپدید می شود و نام پروژه به CoolDoc تغییر می کند.
اگر همه اشیاء را تحت CoolDoc گسترش دهید، باید یک یا دو ماژول را در پروژه ببینید. (به یاد داشته باشید؛ ماکروهای VBA در ماژولها قرار دارند.) برای این بحث، اجازه دهید فرض کنیم که MyMacro (ماکروی که میخواهید اجرا کنید) در ماژول HotStuff پروژه CoolDoc وجود دارد. (همه این نامها به صورت به زودی مورد استفاده قرار گرفت. در این مرحله، فقط باید اسامی مورد استفاده برای پروژه خود و ماژول را با ماکرو یادداشت کنید.)
اکنون شما آماده هستید تا مرجع پروژه CoolDoc را به پروژه ای که ماکرو از آن فراخوانی می شود اضافه کنید. در این مثال، فرض کنید که آن را از یک ماکرو در پروژه Normal فراخوانی میکنید. میتوانید با دنبال کردن این مراحل، مرجع را اضافه کنید (با فرض اینکه ویرایشگر VBA هنوز باز است):

شکل 1. کادر محاوره ای References.
- در پنجره Project در سمت چپ بالای ویرایشگر VBA، پوشه Normal را انتخاب کنید.
- References را از منوی Tools انتخاب کنید. کادر محاوره ای References نمایش داده می شود. (شکل 1 را ببینید.)
- در فهرست منابع موجود، CoolDoc را پیدا کنید.
- مطمئن شوید که چک باکس سمت چپ گزینه CoolDoc انتخاب شده باشد.
- روی OK کلیک کنید.
در نهایت، شما آماده هستید تا عبارت Call را به ماکرویی که می خواهید MyMacro را از آن فراخوانی کنید، اضافه کنید. خط فرمان به صورت زیر ظاهر می شود:
Call CoolDoc.HotStuff.MyMacro
این خط فرمان باعث می شود VBA ماکرو مورد نظر را بدون هیچ گونه ابهامی اجرا کند. با این حال، نکته مهمی وجود دارد که باید به آن توجه کرد. قرار دادن ارجاع به پروژه CoolDoc در Normal باعث میشود که Normal هر بار که Word شروع میشود یک کپی از CoolDoc بارگیری کند — حتی اگر هیچ سندی باز نباشد که بر اساس الگوی CoolDoc.dotm باشد.
این بارگذاری CoolDoc یک سوال واضح را ایجاد می کند: در VBA چه فایده ای دارد که MyMacro را در CoolDoc.dotm قرار دهیم زیرا در زمان بارگذاری یا استفاده از منابع صرفه جویی نمی کند؟ پاسخ کوتاه این است که هیچ نکته ای وجود ندارد، به جز CoolDoc.dotm احتمالاً مکان واضح تری برای قرار دادن کد است که فقط به چیزهایی در CoolDoc.dotm مربوط می شود. (کل این موضوع طراحی معقول پروژه، موضوع بسیار بزرگی برای بحث در این نکته است.)