ترفندهایی برای کار با پاورپوینت(ایجاد نمودار با برنامه نویسی VBA)

موضوعات : آفیس, اکسل

ابزارهای آفیس یکی از کاربردی‌ترین نرم‌افزارهای کار با کامپیوتر می‌باشند، ابزاری چون اکسل(Excel) که یک صفحه گسترده(Spread Sheet) بسیار کارا است که با استفاده از آن می‌توان اعداد را در جدول‌ها و یا در نمودارهای گوناگون نمایش داد، از قابلیت‌های خوب اکسل استفاده از فرمول در جدول‌ها می‌باشد. ابزار دیگر پاورپوینت می‌باشد، پاورپوینت نرم‌افزاری است که با کمک آن می‌توان متن، تصویر، نمودار، جدول‌، صدا، فیلم و ... را در اسلایدهای مختلف با بکارگیری افکت‌های دیداری گوناگون قرار داده و میان اسلایدها حرکت نمود. کاربرد اصلی آن، ارائه مقاله و مطالب مورد نظر در کنفرانس‌ها و سمینارها و یا در جلسات مدیریتی می‌باشد، چرا که سادگی و زیبایی و امکانات موجود در آن این امکان را به سخنران می‌دهد تا مفهوم مورد نظر خود را بهتر و قابل فهم‌تر به مخاطب ارائه نماید. بسیاری از شرکت‌ها در جلسه‌های مدیریتی خود از این نرم‌افزار برای ارائه مسائل مالی، نیروی انسانی و سایر موارد استفاده‌می‌کنند. اما برخی از شرکت‌ها(تقریبا همه شرکت‌های ایران) بجای بکارگیری این نرم‌افزار تنها برای مطالب مهم و جلسات مدیریتی، از آن به عنوان یک برنامه گزارش‌گیری استفاده می‌کنند. برای نمونه به صورت روزانه گزارش مبالغ پرداختی و دریافتی، میزان فروش و خرید، هزینه روزانه و ... را در پاورپوینت‌های جدا(فایل‌های جداگانه) تهیه‌می‌کنند و برای استفاده در اختیار دیگر همکارانشان قرارمی‌دهند. ساختن گزارشی آن‌هم با پاورپوینت(چرا که  پاورپوینت نرم‌افزار گزارش‌گیری نیست) و آن‌هم روزانه واقعا کاری سخت و طاقت‌فرسا می‌باشد. اما اگر دقت شود این گزارش‌ها(منظور گزارش‌های روزانه) دارای شکل و فرمت یکسان می‌باشند. بدین‌معنا که اسلایدها همگی تقریبا(یا بیشتر اسلایدها) مشابه هستند. لذا می‌توان با استفاده از برنامه‌نویسی VBA که مخفف Visual Basic for Application می‌باشد، تولید گزارش‌ روزانه را ساده‌تر کرد.


یک فایل پاورپوینت ایجادکرده و همان ابتدا با پسوند (PowerPoint Macro-Enabled Presentation)pptm در یک فولدر خاص ذخیره نمایید. با زدن دکمه Alt+F11 وارد صفحه برنامه‌نویسی شوید. دکمه  Ctrl+R را زده تا پنجره Project Explorer بازشود، سپس با زدن کلیک راست روی گزینه VBAProject و سپس انتخاب گزینه Insert و در نهایت گزینه Module محیط برای برنامه‌نویسی آماده می‌گردد.(مطابق شکل زیر)

پیش از اینکه کار را ادامه دهیم باید به فایل خود لایبرری(Library) مربوط به برنامه نویسی اکسل را اضافه کنیم، در محیط برنامه‌نویسی به تب Tools رفته و روی گزینه References کلیک می‌کنیم تا پنجره مربوط به رفرنس‌ها باز شود، سپس گزینه Microsoft Excel 15.0 Object Library پیدا کرده و آن را انتخاب می‌کنیم(تیک میزنیم، توجه شود امکان دارد با توجه به ورژن آفیس شما عدد 15.0 چیز دیگری باشد) سپس دکمه Ok را کلیک می‌کنیم.

پیش از ادامه مطلب، در زیر برخی دستورهای مهم که در برنامه کاربردی نیاز می‌باشد توضیح داده‌می‌شود.

  • مجموعه اسلایدها: ActivePresentation.Slides مجموعه همه اسلایدها(اسلایدهای درون فایل جاری پاورپوینت) را برمی‌گرداند.
  • یافتن اسلاید فعال: Application.ActiveWindow.View.Slide این دستور اسلاید فعال(اسلایدی که درحال کار برروی آن هستیم) را برمی‌گرداند.
  • مجموعه اشیای درون یک اسلاید: Application.ActiveWindow.View.Slide.Shapes مجموعه اشیای داخل اسلاید فعال را برمی‌گرداند(شامل اشیایی چون تایتل، نمودار، عکس و ...)
  • نمایش و یا عدم نمایش اخطار: Application.DisplayAlerts با تنظیم مقدار این متغیر شما می‌توانید نمایش اخطار یا عدم نمایش آن را مشخص نمایید.
  • مسیر فایل پاورپوینت جاری: ActivePresentation.Path این متغیر محل فایل پاورپوینت جاری را برمی‌گرداند.
  • ایجاد یک اسلاید از روی اسلایدی دیگر: Duplicate این دستور از یک اسلاید خاص یک کپی ایجاد می‌کند و آن را درست بعد از اسلایدی که کپی از آن ساخته‌شده قرار می‌دهد.
  • یافتن یک فایل باز در حافظه(ویا بارگذاری‌کردن آن در حافظه): GetObject این دستور یک فایل را در حافظه بارگذاری(درصورت باز بودن فقط فایل را برمی‌گرداند) می‌کند. این دستور شاید کمی گنگ باشد لذا به مثال زیر توجه‌کنید:
Dim xWorkBook As Workbook
Dim xlsDir As String
xlsDir = "D:\DailyReport\Data.xlsx"
Set xWorkBook = GetObject(xlsDir)

اگر فایل D:\DailyReport\Data.xlsx توسط اکسل درحافظه باز باشد(اگر باز نبود آن را بارگذاری می‌کند ولی احتمالا شما آن را مشاهده نخواهیدکرد زیرا ویزیبلVisible نیست، البته به شرطی که چنین فایلی در این محل وجود داشته باشد)، آنگاه محتوای فایل توسط متغیر تعریف شده xWorkBook در دسترس می‌باشد.

حال ادامه برنامه:

  • فایل اکسل پیوست را دانلود کرده و در همان محل فایل پاورپوینت قراردهید.
  • درفایل پاورپوینت هر آنچه در اسلاید نخست می‌باشد را حذف و یک نمودار خطی در آن ایجاد کنید(در اینجا من برای نمونه نمودار خطی ایجاد کرده‌ام بعدا شما می‌توانید نمودار مورد نظر خودتان را قرار دهید).
  • کد زیر را کپی کرده و در ماجول قرار دهید.
Sub CreatePowerpointPresentation()
Dim xWorkBook As Workbook, xSheet As Worksheet, xChart As Chart, fSlide As Slide, pSlide As Slide
    Set xWorkBook = GetObject(ActivePresentation.Path & "\Data.xlsx")
    Set xSheet = xWorkBook.Sheets(1)
    xColStr = Array("B", "C", "D")
    Set fSlide = ActivePresentation.Slides(1)
    For i = LBound(xColStr) To UBound(xColStr)
        fSlide.Duplicate
        Set pSlide = ActivePresentation.Slides(2)
        pSlide.MoveTo ActivePresentation.Slides.Count
        pSlide.Select
        Set xChart = pSlide.Shapes(pSlide.Shapes.Count).Chart
        xChart.ChartData.Workbook.Sheets(1).Range("A1:A10").Value = xSheet.Range("A1:A10").Value
        xChart.ChartData.Workbook.Sheets(1).Range("B1:B10").Value = xSheet.Range(xColStr(i) & "1:" & xColStr(i) & "10").Value
        xChart.SetSourceData "=" & xChart.ChartData.Workbook.Sheets(1).Name & "!$A$1:$B$10"
        xChart.ChartData.Workbook.Close
    Next
    xWorkBook.Close (False)
    Set xSheet = Nothing
    Set xWorkBook = Nothing
End Sub

حال به توضیح خط به خط برنامه می‌پردازیم:

  • خط شماره 2: در این خط متغیرهای مورد نیاز تعریف می‌شود.
  • خط شماره 3: در این خط فایل اکسل را در حافظه بارگذاری می‌کنیم.
  • خط شماره 4: از آنجایی که در فایل اکسل داده ها در شیت نخست است مقدار xSheet همان شیت نخست فایل اکسل می‌باشد.
  • خط شماره 5: ستون‌هایی که داده‌ها در آن قرار دارند را مشخص‌کرده‌ایم
  • خط شماره 6: اسلاید نخست را که قرار است از روی آن بقیه اسلایدها ساخته‌شوند در متغیر fSlide قرارمی‌دهیم.
  • خط شماره 7: یک حلقه به تعداد ستون‌ها که تعداد شیت‌ها را نیز مشخص می‌کند.
  • خط شماره 8: از اسلاید نخست یک کپی ایجاد می‌کنیم
  • خط شماره 9: اسلاید جدید ایجاد شده درست بعد از اسلاید نخست قرارمی‌گیرد(یعنی اسلاید شماره دو می‌شود)
  • خط شماره 10: جهت حفظ ترتیب اسلایدها آن را به انتهای فایل پاورپوینت انتقال می‌دهد.
  • خط شماره 11: اسلاید جدید را انتخاب(فعال) می‌کند.
  • خط شماره 12: نمودار(چارت Chart) درون اسلاید را به متغیر xChart نسبت می‌دهد.
  • خط شماره 13: محور افقی نمودار(در اینجا تاریخ) که در واقع مقدارش، همان ستون نخست فایل اکسل است، به نمودار افزوده می‌شود.
  • خط شماره 14: محور عمودی نمودار(در اینجا مقدارهای همر محصول می‌باشد) که مقدار آن در ستون‌های B یا C یا D از فایل اکسل برداشته می‌شود.
  • خط شماره 15: در این خط محدوده داده‌های قابل نمایش مشخص می‌گردد.
  • خط شماره 16: فایل داده‌های نمودار را از حافظه برمی‌داریم.(فرض کنید روی نمودار کلیک راست کرده و Edit Data کرده‌اید، یک صفحه مانند اکسل باز می‌شود که داده‌های نمودار درآن قرار دارد، کاری که خط 16 انجام‌می‌دهد مشابه بستن اکسل داده‌های نمودار است)
  • خط شماره 18: فایل اکسل باز شده را بسته و از حافظه خارج می‌کند.
  • خط شماره 19و20: به متغیرها برای حذف از حافظه مقدار Nothing را می‌دهد.

با اجرای کد بالا می‌توانید یک گزارش سریع از داده‌های اکسل بسازید. برای اجرا کافی است دکمه Alt+F8 را بزنید و از لیست ماکروها گزینه CreatePowerpointPresentation انتخاب کنیدو دکمه Run را بزنید.

شما میتوانید با دانلود فایل فشرده پیوست و بازکردن آن در یک فولدر تمامی مراحل بالا را در فایل مشاهده کنید.


فایلهای مطلب

کپی
لینک اشتراک گذاری

  • 536
  • 0