分享

学以致用——一键生成所有Excel图表类型 (Generate all Excel graphs with one click)

 hdzgx 2019-11-14
一键生成所有类型的Excel图表源码。

效果:


代码:

  1. Public Sub generateAllExcelCharts()
  2. Application.ScreenUpdating = False
  3. '定义用于循环的整型变量
  4. Dim ChartTypeArray() As Variant
  5. Dim ChartCount As Integer
  6. Dim ChartTypeName As String
  7. ChartTypeArray = Array(1, 4, 5, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, _
  8. 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, _
  9. 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, -4169, -4151, -4120, -4102, -4101, -4100, -4098)
  10. ChartCount = 1
  11. Do While (ChartCount <= (UBound(ChartTypeArray) + 1))
  12. '添加图表
  13. Charts.Add
  14. '定义图表类型
  15. ActiveChart.ChartType = ChartTypeArray(ChartCount - 1)
  16. '图表数据源
  17. ActiveChart.SetSourceData Source:=Sheets("AllCharts").Range("B6:AK11"), PlotBy:=xlRows
  18. '设置图表添加的位置
  19. ActiveChart.Location Where:=xlLocationAsObject, Name:="AllCharts"
  20. With ActiveChart
  21. '使图表带有“标题”
  22. .HasTitle = True
  23. '设置图表“标题”
  24. Select Case .ChartType '根据图表类型代码,获取其对应的中文名称
  25. Case 1
  26. ChartTypeName = "面积图"
  27. Case 4
  28. ChartTypeName = "折线图"
  29. Case 5
  30. ChartTypeName = "饼图"
  31. Case 15
  32. ChartTypeName = "气泡图"
  33. Case 51
  34. ChartTypeName = "簇状柱形图"
  35. Case 52
  36. ChartTypeName = "堆积柱形图"
  37. Case 53
  38. ChartTypeName = "百分比堆积柱形图"
  39. Case 54
  40. ChartTypeName = "三维簇状柱形图"
  41. Case 55
  42. ChartTypeName = "三维堆积柱形图"
  43. Case 56
  44. ChartTypeName = "三维百分比堆积柱形图"
  45. Case 57
  46. ChartTypeName = "簇状条形图"
  47. Case 58
  48. ChartTypeName = "堆积条形图"
  49. Case 59
  50. ChartTypeName = "百分比堆积条形图"
  51. Case 60
  52. ChartTypeName = "三维簇状条形图"
  53. Case 61
  54. ChartTypeName = "三维堆积条形图"
  55. Case 62
  56. ChartTypeName = "三维百分比堆积条形图"
  57. Case 63
  58. ChartTypeName = "堆积折线图"
  59. Case 64
  60. ChartTypeName = "百分比堆积折线图"
  61. Case 65
  62. ChartTypeName = "数据点折线图"
  63. Case 66
  64. ChartTypeName = "堆积数据点折线图"
  65. Case 67
  66. ChartTypeName = "百分比堆积数据点折线图"
  67. Case 68
  68. ChartTypeName = "复合饼图"
  69. Case 69
  70. ChartTypeName = "分离型饼图"
  71. Case 70
  72. ChartTypeName = "分离型三维饼图"
  73. Case 71
  74. ChartTypeName = "复合条饼图"
  75. Case 72
  76. ChartTypeName = "平滑线散点图"
  77. Case 73
  78. ChartTypeName = "无数据点平滑线散点图"
  79. Case 74
  80. ChartTypeName = "折线散点图"
  81. Case 75
  82. ChartTypeName = "无数据点折线散点图"
  83. Case 76
  84. ChartTypeName = "堆积面积图"
  85. Case 77
  86. ChartTypeName = "百分比堆积面积图"
  87. Case 78
  88. ChartTypeName = "三维堆积面积图"
  89. Case 79
  90. ChartTypeName = "百分比堆积面积图"
  91. Case 80
  92. ChartTypeName = "分离型圆环图"
  93. Case 81
  94. ChartTypeName = "数据点雷达图"
  95. Case 82
  96. ChartTypeName = "填充雷达图"
  97. Case 83
  98. ChartTypeName = "三维曲面图"
  99. Case 84
  100. ChartTypeName = "三维曲面图(框架图)"
  101. Case 85
  102. ChartTypeName = "曲面图(俯视图)"
  103. Case 86
  104. ChartTypeName = "曲面图(俯视框架图)"
  105. Case 87
  106. ChartTypeName = "三维气泡图"
  107. Case 88
  108. ChartTypeName = "盘高-盘低-收盘图"
  109. Case 89
  110. ChartTypeName = "开盘-盘高-盘低-收盘图"
  111. Case 90
  112. ChartTypeName = "成交量-盘高-盘低-收盘图"
  113. Case 91
  114. ChartTypeName = "成交量-开盘-盘高-盘低-收盘图"
  115. Case 92
  116. ChartTypeName = "簇状柱形圆锥图"
  117. Case 93
  118. ChartTypeName = "堆积柱形圆锥图"
  119. Case 94
  120. ChartTypeName = "百分比堆积柱形圆柱图"
  121. Case 95
  122. ChartTypeName = "簇状条形圆柱图"
  123. Case 96
  124. ChartTypeName = "堆积条形圆柱图"
  125. Case 97
  126. ChartTypeName = "百分比堆积条形圆柱图"
  127. Case 98
  128. ChartTypeName = "三维柱形圆柱图"
  129. Case 99
  130. ChartTypeName = "簇状柱形圆锥图"
  131. Case 100
  132. ChartTypeName = "堆积柱形圆锥图"
  133. Case 101
  134. ChartTypeName = "百分比堆积柱形圆锥图"
  135. Case 102
  136. ChartTypeName = "簇状条形圆锥图"
  137. Case 103
  138. ChartTypeName = "堆积条形圆锥图"
  139. Case 104
  140. ChartTypeName = "百分比堆积条形圆锥图"
  141. Case 105
  142. ChartTypeName = "三维柱形圆锥图"
  143. Case 106
  144. ChartTypeName = "簇状柱形棱锥图"
  145. Case 107
  146. ChartTypeName = "堆积柱形棱锥图"
  147. Case 108
  148. ChartTypeName = "百分比堆积柱形棱锥图"
  149. Case 109
  150. ChartTypeName = "簇状条形棱锥图"
  151. Case 110
  152. ChartTypeName = "堆积条形棱锥图"
  153. Case 111
  154. ChartTypeName = "百分比堆积条形棱锥图"
  155. Case 112
  156. ChartTypeName = "三维柱形棱锥图"
  157. Case -4169
  158. ChartTypeName = "散点图"
  159. Case -4151
  160. ChartTypeName = "雷达图"
  161. Case -4120
  162. ChartTypeName = "圆环图"
  163. Case -4102
  164. ChartTypeName = "三维饼图"
  165. Case -4101
  166. ChartTypeName = "三维折线图"
  167. Case -4100
  168. ChartTypeName = "三维柱形图"
  169. Case -4098
  170. ChartTypeName = "三维面积图"
  171. End Select
  172. .ChartTitle.Characters.Text = "GDP—" & ChartTypeName & "(" & ChartTypeArray(ChartCount - 1) & ")" '设置图表标题
  173. If .FullSeriesCollection.Count = 5 Then '2011年至2015年共5个数据系列,分别命名以提高图表的可读性
  174. .FullSeriesCollection(1).Name = "2015年"
  175. .FullSeriesCollection(2).Name = "2014年"
  176. .FullSeriesCollection(3).Name = "2013年"
  177. .FullSeriesCollection(4).Name = "2012年"
  178. .FullSeriesCollection(5).Name = "2011年"
  179. End If
  180. If .FullSeriesCollection.Count = 3 Then '气泡图仅显示3个系列的数据
  181. .FullSeriesCollection(1).Name = "2015年"
  182. .FullSeriesCollection(2).Name = "2014年"
  183. .FullSeriesCollection(3).Name = "2013年"
  184. End If
  185. End With
  186. With ActiveChart.Parent
  187. If ((ChartCount Mod 3) <> 0) Then '每张图的高度为222磅,每输出3张图表后,下一图表左上角向下偏移222磅
  188. .Top = 222 * (Int(ChartCount / 3) + 1)
  189. Else
  190. .Top = 222 * (ChartCount / 3)
  191. End If
  192. If ((ChartCount Mod 3) <> 0) Then '每张图的高度为222磅,每输出3张图表后,下一图表左上角向右偏移356磅
  193. .Left = 10 + ((ChartCount Mod 3) - 1) * 356
  194. Else
  195. .Left = 10 + 2 * 356
  196. End If
  197. End With
  198. Debug.Print ChartCount & ActiveChart.ChartType & "-" & ChartTypeName & "->"
  199. ChartCount = ChartCount + 1
  200. Loop
  201. Debug.Print "共生成图表" & (ChartCount - 1)
  202. Application.ScreenUpdating = True
  203. End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多