دستوراتی برای تغییر استایل یک نمودار در پاورپوینت
کسانی که با پاورپوینت کارمیکنند میدانند، هرچه تعداد اسلایدها و نمودارها در فایلی که ایجاد کردهاند بیشترباشد، پاورپوینت مفیدتر(اینجا ایران است) خواهدبود، گاهی تعداد اسلایدها به حدی میرسد که تنها ورق زدن آنها از زمان جلسه فراتر میرود. گاهی در هر اسلاید بیش از یک نمودار قرار دارد، حال در اینهمه اسلاید و در هر اسلاید بیش از یک نمودار، ناگهان مدیریت تصمیم میگیرد تمامی فونتهای نمودارها از مثلا فونت آریال به فونت تاهوما تغییر کند و یا مثلا برای تمامی نمودارهای میلهای رنگ هر میله با دیگری متفاوت باشد و یا در نمودار پاراتو آیتمها با 50 درصد تاثیر با رنگی متفاوت از بقیه باشد و ... از این دست تغییرات. شمایید و صدها نمودار که باید این تغییرات را درآنها اعمال نمایید، حال در این میان اگر کاملا اتفاقی خطای انسانی مرتکب شوید و یکی از نمودارها فونتش تغییر نکردهباشد، تمامی آن پاورپوینت به هیچ نمیارزد. تغییر دادن این همه نمودار سخت است و سختتر از آن ایجاد مجدد فایل با فرمت خواستهشدهاست.پس باید راه حلی یافت تا از اینهمه سختی رهایی یافت، راه حل در بکارگیری برنامهنویسی در پاورپوینت است، نمونه چنین کاری را در ترفندهایی برای کار با پاورپوینت دیدهاید. مقاله جاری در ادامه آن میباشد.
مثلا فرض کنید میخواهید یک نمودار میلهای مانند زیر درست کنید(در نمودار فوق هر میله دارای رنگی جدا میباشد)
یا مثلا در یک فروشگاه میخواهید در نمودار هزینهها، آیتمهایی که مجموع هزینه آنها 50درصد از کل هزینهها میشود را نشان دهید مانند زیر:
و از این دست نمودارها، فرض کنید یک نمودار میلهای داریم و اطلاعات نمودار در متغیر(در برنامه نویسی VBA) SetChart قراردارد، نخست باید گفت، در یک نمودار میلهای تفاوت میان سری و کتگوری چیست، به شکل نمودار زیر توجه کنید:
دادههای این نمودار در فایل اکسل به صورت زیر است:
در زیر تعاریف اولیه لازم گفته میشود:
- به هر ردیف یک کتگوری(Category) گفته میشود، یعنی کیف و کلاسور یک کتگوری هست که دو مقدار برای آن وجود دارد یکی 76 دیگری 82(آذر و آبان) و میز و صندلی هم کتگوری دیگری هست و ...
- هر ستون یک سری(Series) گفته میشود، ستون مربوط به آذر سری نخست(یکم) است و ستون آبان سری دوم.
با فرض اینکه نام نمودار SetChart باشد، داریم:
| شرح | مقدارها | نام متغیر |
|---|---|---|
| مشخص میکند آیا چارت ما دارای تایتل است یا نه(میتوان مقدار آن را تغییر داد) | true,false | SetChart.HasTitle |
| تایتل قابل نمایش در چارت | هر مقداری به عنوان تایتل | SetChart.ChartTitle.Text |
| فاصله تایتل از سمت چپ نمودار | عدد | SetChart.ChartTitle.Left |
| رنگ فونت تایتل را مشخص میکند. برای این میتوان از ایندکس رنگ یا RGB استفاده نمود | مقدار رنگ | SetChart.ChartTitle.format.TextFrame2.TextRange.Font.Fill.ForeColor |
| رنگ زمینه تایتل را مشخص میکند. برای این میتوان از ایندکس رنگ یا RGB استفاده نمود | مقدار رنگ | SetChart.ChartTitle.format.TextFrame2.TextRange.Font.Fill.BackColor |
| با این متغیر میتوان مقدار نام فونت، سایز، استایل و ... را برای تایتل مشخص نمود. | مقدار فونت | SetChart.ChartTitle.format.TextFrame2.TextRange.Font |
| با این متغیر به آرایه ای از نام کتگوری ها دستری پیدا میکنیم، برای مثال بالا در آرایه مان به ترتیب: کیف و کلاسور، خودکار،مداد و ماژیک و ... قرار میگیرد. توجه xlCategory یک متغیر درونی VBA میباشد. | آرایه نام کتگوریها | SetChart.Axes(xlCategory).CategoryNames |
| دسترسی به مجموعه تمام سریها را در اختیار برنامهنویس میگذارد. | مجموعه سریها | SetChart.SeriesCollection |
| به سری شماره iSeries دسترسی پیدا میکنید.(مقدار iSeries عددی است و از یک شروع میشود) | اطلاعات یک سری | SetChart.SeriesCollection(iSeries) |
| مشخص میکند که سری شماره iSeries دارای داده برای نمایش هست یا نه. | true,false | xSeries(iSeries).HasDataLabels |
| تمامی اطلاعات دیتالیبل سری شماره iSeries را (از فونت، سایز، رنگ، مکان قرارگیری و ... ) در خود دارد | یک مجموعه دیتا لیبل | SetChart.SeriesCollection(iSeries).DataLabels |
| اطلاعات سری از جمله رنگ(حتی طیف رنگ یا گرادیانت)، رنگآمیزی الگو، تکسچر و ... | اطلاعات فرمت | SetChart.SeriesCollection(iSeries).Format.Fill |
شاید سخن گفتن در باره این کدها چندان برای شما مفید نباشد لذا یک فایل پاورپوینت جدید ایجاد نمایید در اسلاید نخست تمامی اشیای موجود را حذف و یک نمودار میلهای ایجاد کرده و اطلاعات زیر را درآن وارد نمایید سپس یک ماجول در آن ایجاد نمایید و با پسوند pptm آن را ذخیره کنید.
| هزینه ها | آبان | آذر |
| آب و برق | 1000 | 1200 |
| تلفن و موبایل | 2300 | 2000 |
| گاز | 750 | 1250 |
| اجاره | 10250 | 11300 |
نخست کار با تایتل نمودار: کد زیر را در ماجول وارد و اجرا نمایید:
Sub ChartTitleSet()
Dim xSlide As Slide: Set xSlide = Application.ActiveWindow.View.Slide
Dim xShape As Shape
Set xShape = xSlide.Shapes(1)
If xShape.HasChart Then
Dim xChart As Chart
Set xChart = xShape.Chart
xChart.ChartTitle.Text = "My Chart Text"
xChart.ChartTitle.Format.Fill.ForeColor.RGB = RGB(128, 128, 128)
xChart.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
xChart.ChartTitle.Format.TextFrame2.TextRange.Font.Name = "Tahoma"
xChart.ChartTitle.Format.TextFrame2.TextRange.Font.NameComplexScript = "Tahoma"
xChart.ChartTitle.Format.TextFrame2.TextRange.Font.NameFarEast = "Tahoma"
xChart.ChartTitle.Format.TextFrame2.TextRange.Font.Size = 20
xChart.ChartTitle.Left = (xChart.ChartArea.Width - xChart.ChartTitle.Width) / 2
End If
End Subکار کلی برنامه بالا این است که از اسلاید فعال(جاری) شکل شماره یک را بردارد و اگر از نوع چارت Chart بود تایتل آن را تنظیم نماید، دربرنامه بالا:
- خط 2 برای تعریف متغیر اسلاید و نسبت دادن آن به اسلاید فعال میباشد
- خطهای 3 و 4 برای مشخص کردن شی نخست در اسلاید فعال(توجه شود در پاورپوینت تمامی نمودارها، عکسها و ... از نوع شیپ(Shape) میباشند) است.(توجه کنید در بالا گفتیم تمامی اشیا را حذف و فقط یک نمودار میلهای ایجاد کنید لذا شی شماره یک همان نمودار ما میباشد)
- خط 5 تعیین میکند آیا این شیپ(Shape) از نوع نمودار هست یا نه و در صورت نمودار بودن(True) به درون شرط If میرود.
- خطهای 6و7 برای انتخاب نمودار است.
- خط 8 متن تایتل را مشخص میکند.
- خط 9 رنگ زمینه تایتل(در اینجا رنگ خاکستری)را تعیین میکند.
- خط 10 رنگ نوشته تایتل(در اینجا رنگ قرمز) را مشخص میکند.
- خطهای 11و12و13 فونت نوشته(در اینجا تاهوما) مشخص میکند.
- خط 14 اندازه فونت(اینجا 20) را مشخص میکند.
- و خط 15 محل قرار گیری تایتل(در اینجا تنظیم در وسط شده) را تعیین میکند.
کار با سری در یک نمودار: کد زیر را در ماجول وارد نمایید و اجراکنید(کار برنامه آن است که سری شماره یک یا همان آذر ماه را با طیف رنگی سبز و قرمز با بوردر رنگ سیاه تغییر دهد و در هر میله عدد آن را بصورت عمودی نمایش دهد):
Sub SetChartSeries()
Dim xSlide As Slide: Set xSlide = Application.ActiveWindow.View.Slide
Dim xShape As Shape: Set xShape = xSlide.Shapes(1)
If xShape.HasChart Then
Dim xChart As Chart: Set xChart = xShape.Chart
Dim xSeries As Series: Set xSeries = xChart.SeriesCollection(1)
With xSeries
.HasDataLabels = True
.DataLabels.Orientation = xlUpward
.DataLabels.NumberFormat = "0.0"
.DataLabels.Position = xlLabelPositionCenter
.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Format.Fill.BackColor.RGB = RGB(0, 255, 0)
.Format.Fill.TwoColorGradient msoGradientFromCenter, 3
.Format.Line.ForeColor.RGB = RGB(0, 0, 0)
.Format.Line.Visible = msoTrue
.Format.Line.Transparency = 0
.Format.Line.Weight = 3
.Format.Line.DashStyle = msoLineSolid
End With
End If
End Sub- خطهای 2تا5: مشابه قطعه کد بالا میباشد.
- خط 6: از چارتمان سری شماره یک یا همان آبان را انتخاب میکند(اگر بخواهید نمودار مربوط به آذر ماه را رنگآمیزی کنید کافی است در این خط بجای عدد 1 عدد 2 بگذارید)، محدوده میان خط 7 تا 20 میگوید هر متغیری که با نقطه آغاز شود یکی از خواص(Properies) متغیر xSeries میباشد.
- خط 8: دیتا لیبل را فعال میکند.
- خط9: دیتالیبل را بصورت عمودی و از پایین به بالا نمایش میدهد.
- خط10: فرمت عدد را با یک رقم اعشار نمایش میدهد.
- خط11: محل دیتالیبل را نمایش میدهد.
- خط12و13: چون میخواهیم رنگآمیزی بصورت شیبدار(Gradient) باشد، لذا این دو را با مقدارهای قرمز و سبز تنظیم کردیم.
- خط14: رنگآمیزی شیبدار را فعال میکند(توجهکنید آن عدد 3 میتواند مقدارهای 1و2و3و... بگیرد خودتان با مقدارهای متفاوت برنامه را اجرا کنید و تاثیرآن را مشاهدهکنید).
- خطهای 15تا19: رنگ خط دور هر سری نمودار میلهای، نمایش یا عدمنمایش آن، اندازه ضخامت خط و خطچین و غیرخطچین بودن آن را مشخصمیکند.
توجه:اگر با یکبار اجرا رنگآمیزی درست انجام نشد دوباره برنامه را اجرا کنید.
نمودار میلهای با طیف رنگ: فرضکنید اگر بخواهیم در یک نمودار میلهای که سود فروش محصولات را نشان میدهد، رنگ هر میله با توجه به میزان سود، رنگی میان طیف رنگی سبزقرمز باشد، چگونه این کار را باید انجامدهیم(یعنی محصول با بیشترین سود فروش را با رنگ سبز و محصول با کمترین سود فروش را با رنگ قرمز و بقیه را به صورت طیفی از رنگ سبز به سمت رنگ قرمز رنگآمیزی کنیم) به شکل زیر توجه کنید:
برای دیدن نحوه انجام چنین کاری فایل پاورپوینت پیوست را دانلود کرده و تابع SingleBarColoring و CreateGradiantColor را مورد بررسی قراردهید.
توجه: بدلایل امنیتی میزبان سایت، نخست فایل را دانلود کنید و از حالت فشرده خارج کنید، فایلی با پسووند RA مشاهده میکنید، فایل را به پسوند RAR تغییر دهید و دوباره از حالت فشرده خارج نمایید.
فایلهای مطلب
تغییر استایل یک نمودار در پاورپوینت (49.22 کیلو بایت)
تغییر استایل یک نمودار در پاورپوینت (68.36 کیلو بایت)









