گری به طور مرتب یک فایل XLS را دریافت می کند که توسط شخصی خارج از شرکت او تولید می شود. سپس او باید چند ماکرو را به ورک بوک وارد کند (یا، زحمت!، آنها را از یک فایل TXT کپی کند) و سپس ورک بوک را در قالب XLSM ذخیره کند. گری به این فکر می کند که آیا راهی برای خودکارسازی این کار وجود دارد، به طوری که می تواند ماکرویی را اجرا کند که ماکروهایی را که معمولاً به صورت دستی اضافه می کرد وارد کند و سپس ورک بوک را با فرمت مناسب ذخیره کند.
راهی برای خودکارسازی آن با استفاده از شی VBProject وجود دارد. اگر فایل متنی خارجی شما اساساً شامل ماژول های ویژوال بیسیک است، می توانید از روش Import برای وارد کردن واقعی آن ماژول ها استفاده کنید. دقیقاً به همان صورت عمل می کند که اگر می خواهید از قابلیت های Import ویرایشگر ویژوال بیسیک استفاده کنید. نمونه ای از کدهایی که می توانید استفاده کنید در اینجا آمده است:
Sub AutomateImport()
Const ModulePath As String = "C: empcode.txt"
Dim thisTarget As Workbook
Dim thisName As String
Set thisTarget = ActiveWorkbook
thisName = thisTarget.Name
Save as XLSM file (neceassry before importing module)
ActiveWorkbook.SaveAs thisName & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
Import the VBA code required
thisTarget.VBProject.VBComponents.Import ModulePath
Save the workbook
ActiveWorkbook.Save
End Sub
توجه داشته باشید که کد قبل از وارد کردن، ورک بوک فعال را به عنوان یک فایل XLSM ذخیره می کند. این امر ضروری است زیرا اگر بخواهید یک ماژول VBA را در ورک بوکی که از ماکروها پشتیبانی نمی کند وارد کنید، ممکن است عملکرد Import از بین برود. علاوه بر این، اگر هنگام اجرای ماکرو خطایی دریافت کردید، ممکن است بخواهید در ویرایشگر ویژوال بیسیک بررسی کنید که مرجعی به کتابخانه اشیاء توسعه پذیری VBA ایجاد کرده اید.
برای استفاده از ماکرو، مطمئن شوید که ثابت ModulePath را به روزرسانی کرده اید تا به فایل متنی مورد نظر اشاره کند. ماکرو همچنین باید در ورک بوک شخصی شما ذخیره شود تا هر زمان که از اکسل استفاده می کنید در دسترس باشد.
همچنین ممکن است با بررسی برخی از کدها در سایت Ron DeBruins که نحوه وارد کردن و صادرات کد VBA را در یک ماکرو نشان می دهد، سود ببرید:
https://www.rondebruin.nl/win/s9/win002.htm