Option Explicit
Sub WRYChart()
'ประกาศชนิดของตัวแปร
Dim parameterNum As Integer
Dim co As ChartObject
Dim ct As Chart
Dim sc1 As SeriesCollection
Dim ser1 As Series
Dim LC As Long
'ให้สามารถสร้างกราฟตามชุดข้อมูลที่สนใจได้ จึงกำหนดหมายเลขกำกับแล้วอิงจากตัวเลขนั้นเพื่อสร้างกราฟ
parameterNum = InputBox("What parameter would you like to chart?")
'กำหนดหมายเลขของชุดข้อมูลไว้ เท่าไหร่ก็ได้ต้องครอบคลุมจำนวนชุดข้อมูลที่มี เช่น อันนี้มี 100 กราฟที่ต้องสร้าง
If parameterNum > 0 And parameterNum < 100 Then
'ตำแหน่ง(A10) cells ใน excel ที่อยากจะสร้างและวางกราฟลงไป ชื่อและขนาดของกราฟ ในที่นี้มีหลายกราฟ จึงเลือก column ท้ายสุดของข้อมูล และ(offset)เลื่อนลง ตามลำดับชุดข้อมูล
Set co = Sheet3.ChartObjects.Add(Range("A10").Offset(parameterNum, 1).Left, Range("A10").Offset(parameterNum, 1).Top, 450, 200) 'Chart location
co.Name = "parameter number" & parameterNum & "Chart"
'ใส่รายละเอียดของกราฟที่อยากได้ ชื่อกราฟ รายละเอียดของแกน x,y
Set ct = co.Chart
With ct
.HasLegend = True
.HasTitle = True
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Jahr" 'กำหนดป้ายของแกน x โดยเขียนเองเป็นข้อความ
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Range("F3").Offset(parameterNum, 0).Value 'กำหนดป้ายของแกน y กำหนดให้เปลี่ยนตามข้อมูลใน cells ที่กำหนดไว้
.Axes(xlCategory).CategoryType = xlTimeScale 'ชนิดของข้อมูล
.Axes(xlCategory).BaseUnitIsAuto = True
.Axes(xlCategory).MajorUnit = 2 'กำหนดการแบ่งหน่วย
.Axes(xlCategory).TickLabels.Orientation = xlTickLabelOrientationUpward 'กำหนดการวางตัวป้าย
.ChartTitle.Text = Range("G3").Offset(parameterNum, 0).Value 'กำหนดชื่อ ให้เปลี่ยนตามข้อมูลใน cells (เริ่มที่ G3 เลื่อนตามหมายเลขเลือก) ที่กำหนดไว้
Set sc1 = .SeriesCollection
Set ser1 = sc1.NewSeries
'รายละเอียดข้อมูลของกราฟที่จะสร้าง
With ser1
.Name = Range("G3").Offset(parameterNum, 0).Value 'ชื่อของข้อมูล
.XValues = Range(Range("G3").Offset(0, 1), Range("G3").End(xlToRight)) 'ชุดข้อมูลของแกน x (เลือกที่ตำแหน่ง G3 จนถึงตำแหน่งขาวสุด)
.Values = Range(Range("H3").Offset(parameterNum, 0), Range("L3").Offset(parameterNum, 0)) 'ชุดข้อมูลของแกน x (เลือกที่ตำแหน่ง H3 จนถึง L3)
.ChartType = xlXYScatterSmoothNoMarkers 'ชนิดของกราฟ
.Trendlines.Add(Type:=xlLinear, DisplayRSquared:=True).Select 'เพิ่มเติม การใส่ Trendline และค่า R Square ของเส้น
End With
End With
MsgBox ("That's Perfect!") 'แจ้งเตือนเมื่อกราฟสร้างเสร็จ
Else: MsgBox ("You must enter a parameter number between 1 and 100") 'แจ้งเตือนเมื่อใส่ตัวเลขผิดพลาด
End If
End Sub
ปล. กำหนดชุดข้อมูลของ x, y สามารถกำหนดในรูปแบบนี้ได้เช่นกัน
คลิกเลือก File → Open เลือกไฟล์ภาพที่ต้องการนำมาแสดงด้วย Google Maps Viewer ในส่วนของ Max Zoom Level ควรตั้งไว้ตามค่าเดิม แต่ถ้าต้องการเพิ่มให้ซูมได้มากยิ่งขึ้นสามารถปรับเพิ่มได้ แต่ก็จะทำให้ต้องใช้เวลาในการสร้างไฟล์นานยิ่งขึ้น จากนั้นคลิกปุ่ม Create
เมื่อโปรแกรมสร้างไฟล์เสร็จแล้ว จะได้ไฟล์ HTML และโฟลเดอร์ที่เก็บภาพที่โปรแกรมสร้างขึ้นมาใหม่จำนวนจะมากน้อยตามความละเอียดที่ตั้งไว้ สามารถแสดงผลได้ทันทีโดยการคลิกเปิดไฟล์ HTML ด้วยบราวเซอร์ท่องเว็บไซต์ทั้วไป เช่น Internet Explorer, Google chrome, Safari เป็นต้น สามารถดูในแบบ Offline ได้ทันที
ถ้าต้องการนำภาพดังกล่าวไปแสดงบนเว็บไซต์สามารถทำได้โดยการอัพโหลดไฟล์ HTML และโฟลเดอร์ภาพขึ้นไปไว้บนเซิร์ฟเวอร์จากนั้นเรียกการแสดงผลโดยการใช้โค้ด