آموزش VBA

آموزش ویژوال بیسیک

آنچه در این صفحه می خوانید:

معرفی VBA

ویژوال بیسیک برای برنامه های کاربردی (VBA) اجرای زبان برنامه نویسی Visual Basic 6 است و محیط توسعه یکپارچه مرتبط با آن (IDE) می باشد. اگرچه ویژوال بیسیک دیگر توسط مایکروسافت پشتیبانی یا به روز نمی شود، زبان برنامه نویسی VBA در سال 2010 با معرفی VBA نسخه 7 در برنامه های مایکروسافت آفیس ارتقا یافت. VBA می تواند ساخت توابع تعریف شده توسط کاربر (UDF)، خودکارسازی فرایندها و دسترسی به API ویندوز و سایر عملکردهای سطح پایین از طریق کتابخانه های لینک پویا (DLL) را امکان پذیر کند. توانایی های زبان های برنامه نویسی کلان قبلی ویژه برنامه مانند Word BASIC را لغو و گسترش می دهد. این می تواند برای کنترل بسیاری از جنبه های برنامه میزبان، از جمله دستکاری در ویژگی های رابط کاربری، مانند منوها و نوار ابزار، و کار با فرم های کاربری سفارشی یا جعبه گفتگو مورد استفاده قرار گیرد.

همانطور که از نام آن پیداست، VBA ارتباط نزدیکی با ویژوال بیسیک دارد و از کتابخانه ویژوال بیسیک Runtime استفاده می کند. اما، کد VBA معمولاً فقط به عنوان یک برنامه مستقل فقط در یک برنامه میزبان قابل اجرا است. با این حال، VBA می تواند با استفاده از اتوماسیون OLE، یک برنامه را از برنامه دیگری کنترل کند. به عنوان مثال، VBA می تواند به طور خودکار گزارش Microsoft Word را از داده های Microsoft Excel ایجاد کند که Excel به طور خودکار از سنسورهای نظرسنجی جمع آوری می کند. VBA می تواند از ActiveX / COM DLL ها استفاده کند، اما نمی تواند ایجاد کند، و نسخه های بعدی پشتیبانی از ماژول های کلاس را اضافه می کند.

VBA در بیشتر برنامه های Microsoft Office شامل Office برای Mac OS X و سایر برنامه های مایکروسافت از جمله Microsoft MapPoint و Microsoft Visio ساخته شده است. VBA تا حدودی در برنامه های منتشر شده توسط شرکت های غیر از مایکروسافت، از جمله ArcGIS ،AutoCAD ،CorelDraw ،LibreOffice ،Reflection ،SolidWorks و WordPerfect پیاده سازی شده است. VBA را با VB اشتباه نگیرید (که مخفف ویژوال بیسیک است). VB یک زبان برنامه نویسی است که به شما امکان می دهد برنامه های اجرایی مستقل ایجاد کنید. اگرچه VBA و VB اشتراکات زیادی دارند، اما متفاوت هستند.

ویژگی های VBA

در برنامه های کاربردی MS Office، ویژوال بیسیک برای برنامه ها به کاربران اجازه می دهد تا عملکردهای بی شماری را انجام دهند که فراتر از پردازش ساده کلمات و توابع صفحه گسترده است. برای کاربر معمولی، VBA کمک می کند تا کارهای مکرر روزمره از طریق ماکرو اتوماسیون شود. ماکروها می توانند تقریباً در مورد هر کار دیگری مانند تولید نمودارها و گزارش های سفارشی شده و عملکردهای پردازش داده و کلمات را انجام دهند. به عنوان مثال، می توانید یک ماکرو بنویسید که با یک کلیک، باعث می شود که اکسل یک ترازنامه کامل از یک سری از حساب های حسابداری را در یک صفحه گسترده ایجاد کند.

برای متخصصان رایانه

با این حال، برنامه نویسان از ماکرو به روش های پیچیده تری استفاده می کنند، مانند تکرار کردن قسمت های بزرگ کد، ادغام عملکردهای برنامه های موجود و طراحی زبان های خاص.

برای شرکت ها و سازمان ها

VBA همچنین می تواند با استفاده از فن آوری به نام "رابط COM" در تنظیمات بیرونی یعنی غیر از مایکروسافت، کار کند، این امر به شما امکان می دهد تا فرامین در مرزهای رایانه تعامل داشته باشند. بسیاری از شرکت ها VBA را در برنامه های شخصی خود، اعم از اختصاصی و تجاری، از جمله اتوکد و SolidWorks به اجرا در آورده اند. هر شرکت ممکن است از VBA برای شخصی سازی اکسل برای یک هدف منحصر به فرد استفاده کند، مانند تشخیص اینکه چقدر طول می کشد تا یک میلیون دلار در یک نمونه کار سرمایه گذاری بر اساس نرخ بهره خاص و سایر عوامل مانند تعداد سال های بازنشستگی درآمد کسب کند.

اتوماسیون

تعامل با برنامه میزبان از اتوماسیون OLE استفاده می کند. به طور معمول، برنامه میزبان نوعی از اسناد رابط برنامه نویسی کتابخانه و برنامه (API) را تهیه می کند که نحوه ارتباط برنامه های VBA با برنامه را مستند می کند. این اسناد می توانند از داخل محیط توسعه VBA با استفاده از مرورگر Object مورد بررسی قرار گیرند. برنامه های VBA که برای استفاده از رابط اتوماسیون OLE از یک برنامه نوشته شده اند، نمی توانند برای اتوماسیون برنامه متفاوت استفاده شوند، حتی اگر آن برنامه میزبان زمان اجرا ویژوال بیسیک باشد، زیرا رابط های اتوماسیون OLE متفاوت خواهند بود. به عنوان مثال، یک برنامه VBA که برای خودکار سازی مایکروسافت ورد نوشته شده است، نمی تواند با یک پردازنده کلمه متفاوت استفاده شود، حتی اگر آن پردازنده کلمه میزبان VBA باشد.

در مقابل، چندین برنامه با ایجاد اشیاء برنامه با کد VBA می توانند از یک میزبان خودکار شوند. قبل از اینکه هر یک از روش ها، اشیاء و غیره برای استفاده در برنامه در دسترس باشد، مراجع به کتابخانه های مختلف باید در مشتری VBA ایجاد شود. این امر از طریق آنچه به عنوان اولیه یا دیرهنگام اتصال خوانده می شود، حاصل می شود. این اشیاء برنامه هنگامی که برای اولین بار ایجاد می شوند، پیوند OLE را به برنامه ایجاد می کنند. دستورات مربوط به برنامه های مختلف باید صریحاً از طریق این اشیاء برنامه انجام شود تا به درستی کار کند.

به عنوان نمونه، کد VBA که در Microsoft Access نوشته شده است می تواند به کتابخانه های Excel ،Word و Outlook مراجعه کند. این باعث می شود تا برنامه ای ایجاد کنید که به عنوان مثال یک کوئری را در Access اجرا کند، نتایج را به اکسل صادر کند و آنها را تجزیه و تحلیل کند، و سپس خروجی را به صورت جداول در یک سند Word قالب بندی کند یا آنها را به عنوان یک ایمیل Outlook ارسال کند. برنامه های VBA می توانند به یک دکمه منو، ماکرو، میانبر صفحه کلید یا یک رویداد OLE / COM مانند باز کردن یک سند در برنامه وصل شوند. این زبان رابط کاربری در قالب UserForms فراهم می کند، که می تواند میزبان کنترل های ActiveX برای عملکردهای اضافه شده باشد.

اتوماسیون ارتباطات بین فرایندی شامل Exchange Dynamic Data و RealTimeData است که امکان تماس با سرور اتوماسیون Model Component Object Model را برای داده های مالی یا علمی پویا یا در زمان واقعی فراهم می کند.

کاربرد VBA

VBA به کاربران اجازه می دهد فراتر از آنچه که معمولاً با برنامه های MS Office در دسترس است، سفارشی سازی کنند. با دستکاری ویژگی های GUI مانند نوار ابزار و منوها، جعبه گفتگو و فرم ها. ممکن است از VBA برای ایجاد توابع تعریف شده توسط کاربر (UDF)، دسترسی به واسط های برنامه نویسی برنامه Windows و خودکار کردن فرایندها و محاسبات خاص رایانه استفاده کنید.

مجموعه برنامه های Office مجموعه ای از ویژگی های غنی دارد. روش های مختلفی برای نویسندگی، قالب بندی و دستکاری اسناد، ایمیل، پایگاه داده، فرم ها ارائه شده است. قدرت بسیار مهم برنامه نویسی VBA در Office این است که تقریباً هر عملی که می توانید با ماوس، صفحه کلید انجام دهید، می توانید با استفاده از VBA نیز انجام دهید. علاوه بر این، اگر یک بار با VBA انجام شود، می توان آن را به راحتی صد بار انجام داد. در واقع، اتوماسیون کارهای تکراری یکی از رایج ترین کاربردهای VBA در Office است.

فراتر از قدرت برنامه نویسی VBA برای تسریع در کارهای روزانه، می توانید از VBA برای اضافه کردن قابلیت های جدید به برنامه های Office استفاده کنید یا از طریق اسناد خود را به روش هایی خاص برای نیازهای شغلی خود با کاربر در اسناد خود فوراً و تعامل کنید. به عنوان مثال، می توانید کد VBA را بنویسید که یک پیام پاپ آپ را نشان می دهد که به کاربران یادآوری می کند اولین باری که سعی در ذخیره آن دارند، یک سند را در درایو شبکه خاص ذخیره کنند.

VBA ماکرو چیست؟

در برنامه های کاربردی MS Office، ویژوال بیسیک برای برنامه ها به کاربران اجازه می دهد تا عملکردهای بی شماری را انجام دهند که فراتر از پردازش ساده کلمات و توابع صفحه گسترده است. برای کاربر معمولی، VBA کمک می کند تا کارهای مکرر روزمره از طریق ماکرو کمتر تکرار شود. ماکروها می توانند تقریباً در مورد هر کار دیگری مانند تولید نمودارها و گزارش های سفارشی شده و عملکردهای پردازش داده و کلمات را انجام دهند. به عنوان مثال، می توانید یک ماکرو بنویسید که با یک کلیک، باعث می شود که اکسل یک ترازنامه کامل از یک سری از حساب های حسابداری را در یک صفحه گسترده ایجاد کند.

مانند هر زبان برنامه نویسی مشترک، ماکروهای VBA را می توان با هدف مخرب ایجاد کرد. با استفاده از VBA، بسیاری از ویژگی های امنیتی در دست کاربر است نه نویسنده. گزینه های برنامه VBA host برای کاربر قابل دسترسی است. کاربری که هر فایلی را که حاوی ماکرو VBA است اجرا کند می تواند با ترجیحات کاربر نرم افزار را از پیش تنظیم کند. کاربران نهایی می توانند با غیرفعال کردن ماکرو از اجرای برنامه یا با اجازه مجوز برای اجرای کد VBA فقط در صورت اطمینان از منبع، در برابر حمله محافظت کنند.

VBA در اکسل

اگر VBA سخت تر از ضبط یک ماکرو است، چرا از آن استفاده می کنید؟ پاسخ کوتاه این است که شما از ماکروهای VBA قدرت بیشتری کسب می کنید. به جای اینکه بتوانید در اکسل کلیک کرده و آن کلیک ها را ضبط کنید، می توانید به طیف گسترده ای از توابع و قابلیت های Excel دسترسی پیدا کنید. فقط باید بدانید که چگونه از آنها استفاده کنید و هنگامی که با VBA آشنا باشید، می توانید تمام کارهایی را که ممکن است در زمان زیادی بگیرد در زمان بسیار کمتری انجام دهید. نتایج همچنین قابل پیش بینی تر خواهد بود، زیرا دقیقاً به Excel می گویید چه کاری انجام دهد. به هیچ وجه ابهام وجود ندارد. هنگامی که ماکرو VBA خود را ایجاد کردید، ذخیره و به اشتراک گذاری آن آسان است، بنابراین هر کس دیگری می تواند از آن استفاده کند. این به خصوص هنگامی مفید است که شما با افراد زیادی کار می کنید که نیاز به انجام همان کارها در اکسل دارند.

مثال کد VBA در اکسل

این ماکرو فوق العاده ساده یک ردیف را از یک صفحه به صفحه دیگر کپی می کند.

Sub Paste_OneRow()

'Copy and Paste Row Sheets("sheet1").Range("1:1").Copy Sheets("sheet2").Range("1:1")

Application.CutCopyMode = False

End Sub

این ماکرو Outlook را راه اندازی می کند، یک ایمیل تهیه می کند و ActiveWorkbook را پیوست می کند.

Sub Send_Mail()
    Dim OutApp As Object
    Dim OutMail As Object
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .to = "test@test.com"
        .Subject = "Test Email"
        .Body = "Message Body"
        .Attachments.Add ActiveWorkbook.FullName
        .Display
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

آیا این نوشته را دوست داشتید؟