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

去年开发了一个小程序,可以一键生成所有类型的Excel图表。有网友留言求源码,今天决定分享出来。

效果:


代码:

Public Sub generateAllExcelCharts()
    Application.ScreenUpdating = False
'定义用于循环的整型变量
Dim ChartTypeArray() As Variant
Dim ChartCount As Integer
Dim ChartTypeName As String

    ChartTypeArray = Array(1, 4, 5, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, _
                            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, _
                            102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, -4169, -4151, -4120, -4102, -4101, -4100, -4098)

    ChartCount = 1
    Do While (ChartCount <= (UBound(ChartTypeArray) + 1))
        '添加图表
        Charts.Add
        '定义图表类型
        ActiveChart.ChartType = ChartTypeArray(ChartCount - 1)
        '图表数据源
        ActiveChart.SetSourceData Source:=Sheets("AllCharts").Range("B6:AK11"), PlotBy:=xlRows
        '设置图表添加的位置
        ActiveChart.Location Where:=xlLocationAsObject, Name:="AllCharts"
        With ActiveChart
            '使图表带有“标题”
            .HasTitle = True
            '设置图表“标题”
            Select Case .ChartType '根据图表类型代码,获取其对应的中文名称
                Case 1
                    ChartTypeName = "面积图"
                Case 4
                    ChartTypeName = "折线图"
                Case 5
                    ChartTypeName = "饼图"
                Case 15
                    ChartTypeName = "气泡图"
                Case 51
                    ChartTypeName = "簇状柱形图"
                Case 52
                    ChartTypeName = "堆积柱形图"
                Case 53
                    ChartTypeName = "百分比堆积柱形图"
                Case 54
                    ChartTypeName = "三维簇状柱形图"
                Case 55
                    ChartTypeName = "三维堆积柱形图"
                Case 56
                    ChartTypeName = "三维百分比堆积柱形图"
                Case 57
                    ChartTypeName = "簇状条形图"
                Case 58
                    ChartTypeName = "堆积条形图"
                Case 59
                    ChartTypeName = "百分比堆积条形图"
                Case 60
                    ChartTypeName = "三维簇状条形图"
                Case 61
                    ChartTypeName = "三维堆积条形图"
                Case 62
                    ChartTypeName = "三维百分比堆积条形图"
                Case 63
                    ChartTypeName = "堆积折线图"
                Case 64
                    ChartTypeName = "百分比堆积折线图"
                Case 65
                    ChartTypeName = "数据点折线图"
                Case 66
                    ChartTypeName = "堆积数据点折线图"
                Case 67
                    ChartTypeName = "百分比堆积数据点折线图"
                Case 68
                    ChartTypeName = "复合饼图"
                Case 69
                    ChartTypeName = "分离型饼图"
                Case 70
                    ChartTypeName = "分离型三维饼图"
                Case 71
                    ChartTypeName = "复合条饼图"
                Case 72
                    ChartTypeName = "平滑线散点图"
                Case 73
                    ChartTypeName = "无数据点平滑线散点图"
                Case 74
                    ChartTypeName = "折线散点图"
                Case 75
                    ChartTypeName = "无数据点折线散点图"
                Case 76
                    ChartTypeName = "堆积面积图"
                Case 77
                    ChartTypeName = "百分比堆积面积图"
                Case 78
                    ChartTypeName = "三维堆积面积图"
                Case 79
                    ChartTypeName = "百分比堆积面积图"
                Case 80
                    ChartTypeName = "分离型圆环图"
                Case 81
                    ChartTypeName = "数据点雷达图"
                Case 82
                    ChartTypeName = "填充雷达图"
                Case 83
                    ChartTypeName = "三维曲面图"
                Case 84
                    ChartTypeName = "三维曲面图(框架图)"
                Case 85
                    ChartTypeName = "曲面图(俯视图)"
                Case 86
                    ChartTypeName = "曲面图(俯视框架图)"
                Case 87
                    ChartTypeName = "三维气泡图"
                Case 88
                    ChartTypeName = "盘高-盘低-收盘图"
                Case 89
                    ChartTypeName = "开盘-盘高-盘低-收盘图"
                Case 90
                    ChartTypeName = "成交量-盘高-盘低-收盘图"
                Case 91
                    ChartTypeName = "成交量-开盘-盘高-盘低-收盘图"
                Case 92
                    ChartTypeName = "簇状柱形圆锥图"
                Case 93
                    ChartTypeName = "堆积柱形圆锥图"
                Case 94
                    ChartTypeName = "百分比堆积柱形圆柱图"
                Case 95
                    ChartTypeName = "簇状条形圆柱图"
                Case 96
                    ChartTypeName = "堆积条形圆柱图"
                Case 97
                    ChartTypeName = "百分比堆积条形圆柱图"
                Case 98
                    ChartTypeName = "三维柱形圆柱图"
                Case 99
                    ChartTypeName = "簇状柱形圆锥图"
                Case 100
                    ChartTypeName = "堆积柱形圆锥图"
                Case 101
                    ChartTypeName = "百分比堆积柱形圆锥图"
                Case 102
                    ChartTypeName = "簇状条形圆锥图"
                Case 103
                    ChartTypeName = "堆积条形圆锥图"
                Case 104
                    ChartTypeName = "百分比堆积条形圆锥图"
                Case 105
                    ChartTypeName = "三维柱形圆锥图"
                Case 106
                    ChartTypeName = "簇状柱形棱锥图"
                Case 107
                    ChartTypeName = "堆积柱形棱锥图"
                Case 108
                    ChartTypeName = "百分比堆积柱形棱锥图"
                Case 109
                    ChartTypeName = "簇状条形棱锥图"
                Case 110
                    ChartTypeName = "堆积条形棱锥图"
                Case 111
                    ChartTypeName = "百分比堆积条形棱锥图"
                Case 112
                    ChartTypeName = "三维柱形棱锥图"
                Case -4169
                    ChartTypeName = "散点图"
                Case -4151
                    ChartTypeName = "雷达图"
                Case -4120
                    ChartTypeName = "圆环图"
                Case -4102
                    ChartTypeName = "三维饼图"
                Case -4101
                    ChartTypeName = "三维折线图"
                Case -4100
                    ChartTypeName = "三维柱形图"
                Case -4098
                    ChartTypeName = "三维面积图"
           End Select
                
            
            .ChartTitle.Characters.Text = "GDP—" & ChartTypeName & "(" & ChartTypeArray(ChartCount - 1) & ")" '设置图表标题
           
           If .FullSeriesCollection.Count = 5 Then '2011年至2015年共5个数据系列,分别命名以提高图表的可读性
             .FullSeriesCollection(1).Name = "2015年"
             .FullSeriesCollection(2).Name = "2014年"
             .FullSeriesCollection(3).Name = "2013年"
             .FullSeriesCollection(4).Name = "2012年"
             .FullSeriesCollection(5).Name = "2011年"
           End If
           
           If .FullSeriesCollection.Count = 3 Then  '气泡图仅显示3个系列的数据
             .FullSeriesCollection(1).Name = "2015年"
             .FullSeriesCollection(2).Name = "2014年"
             .FullSeriesCollection(3).Name = "2013年"
           End If
           
           End With

        With ActiveChart.Parent
            If ((ChartCount Mod 3) <> 0) Then   '每张图的高度为222磅,每输出3张图表后,下一图表左上角向下偏移222磅
                .Top = 222 * (Int(ChartCount / 3) + 1)
                    Else
                        .Top = 222 * (ChartCount / 3)
            End If
            
            If ((ChartCount Mod 3) <> 0) Then   '每张图的高度为222磅,每输出3张图表后,下一图表左上角向右偏移356磅
                .Left = 10 + ((ChartCount Mod 3) - 1) * 356
                    Else
                        .Left = 10 + 2 * 356
            End If
        End With
        Debug.Print ChartCount & ActiveChart.ChartType & "-" & ChartTypeName & "->"
        ChartCount = ChartCount + 1
    Loop
    
    Debug.Print "共生成图表" & (ChartCount - 1)
    Application.ScreenUpdating = True
End Sub

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值