精华内容
下载资源
问答
  • 添加图表的其他方法 1.通过添加Chart对象添加图表 2.通过Shapes集合的AddChart方法添加图表 示例 月份 产品A销售额 产品B销售额 1月 1247 628 2月 519 936 3月 1175 792 4月 ...

    目录

    示例

    代码

    ChartObjects集合和ChartObject对象

    数据系列(Series)对象

    添加图表的其他方法

    1.通过添加Chart对象添加图表

    2.通过Shapes集合的AddChart方法添加图表


    示例

    月份产品A销售额产品B销售额
    1月1247628
    2月519936
    3月1175792
    4月1262802
    5月760595
    6月634916
    7月752764
    8月631751
    9月8521181
    10月8981333
    11月1150562
    12月14431017

    代码

        在工作表中使用ChartObjects集合的Add方法添加一个图表容器,然后访问其Chart属性,为图表设置数据源、类型等,并设置图表的格式。
     

    Option Explicit
    
    Sub VBA创建图表()
        Dim sht As Worksheet
        Dim objCht As ChartObject
        Dim cht As Chart
        
        Set sht = Sheets("sheet1")
        With sht
            For Each objCht In .ChartObjects
                objCht.Delete
            Next objCht
         '创建图表
         Set objCht = sht.ChartObjects.Add(Left:=.Range("E1").Left, Top:=Range("E1").Top, Width:=360, Height:=250)
           
        End With
        
        '操作图表
        Set cht = objCht.Chart
        With cht
            '设置数据源
            .SetSourceData sht.Range("A1").CurrentRegion, xlColumns
            '设置图例位置
            .SetElement msoElementLegendBottom
            '删除Y中主要的网络线
            .Axes(xlValue).MajorGridlines.Delete
            '设置标题位置
            .SetElement msoElementChartTitleAboveChart
            '设置标题
            .ChartTitle.Text = "年度产品销售额对比"
            '设置系列1的类型为柱状图
            .SeriesCollection(1).ChartType = xlColumnClustered
            '设置系列2的类型为拆线图
            .SeriesCollection(2).ChartType = xlLine
        End With
    End Sub
    

        Chart对象的属性和方法极其丰富,其复杂程度超过了单元格对象。但是好在开发者可以通过录制宏获取的代码了解其各个属性与方法,因而本例仅介绍关键的属性和方法。

    ChartObjects集合和ChartObject对象

        ChartObjects集合是图表对象Chart的容器,当图表存在于工作表中时,必须嵌套在ChartObject对象中,一个图表对象对应一个ChartObject对象。ChartObjects集合则是ChartObject对象的集合,是工作表对象的子对象。当需要访问某个ChartObject对象时,可以使用以下形式访问ChartObject对象:

    Workhsheet.ChartObjects(index )

    或者

    Workhsheet.ChartObjects(chartObjectName )

        其中,Worksheet表示工作表对象。参数index为ChartObject的序号,该序号从1开始,默认情况下为图表对象添加的先后顺序。参数chartObjectName为ChartObject的名称,即工作表中“名称框”中的名称。
        使用ChartObjects的Add方法可以添加一个ChartObject对象,当ChartObject对象被创建后,图表对象Chart也被自动创建。Add方法的语法为

    ChartObjects.Add(Left,Top,Width,Height)

        参数Left和Top为图表的坐标。参数Width和Height为图表的尺寸。图表对象的坐标和尺寸是由ChartObject对象决定的,在创建该对象后需要指定该四个参数以确定其坐标和尺寸。开发者也可以通过修改该对象的Left、Top、Width和Height属性来修改其坐标和尺寸。

    Chart对象

        当添加ChartObject对象之后,可以使用其Chart属性来访问图表对象(Chart),从而实现图表的真正创建。
        Chart对象创建后,可以使用SetSourceData方法设置其数据源,该方法的语法为

    Chart.Se tSourceData(Source,PlotBy)

    其中,Chart表不一个图表对象,通常是对ChartObject对象Chart属性的访问。
        参数Source为表示图表数据的单元格区域对象。
        参数PlotBy表示数据的绘制方式。当其值为xIColumns时,表示数据的一列为一个数据系列;当其值为xIRows时,则表示一行为一个数据系列。PlotBy同时也是Chart对象的一个属性,数据源添加完毕之后,也可以通过修改该属性的值来修改数据的绘制方式。当该参数省略时,则由Excel自行判断。本例需要比较B列和C列,因而按列区分数据系列,则该参数设置为xIColumns。
        图表的类型设置可以通过更改其ChartType属性实现。常用的ChartType属性赋值可以见表。

        常  量

       

        说  明

    xlXYScatter

    -4169

    散点图

    xlRadar

    -4151

    雷达图

    xlDoughnut

    -4120

    圆环图

    xlArea

    1

    面积网

    xlLine

    4

    折线网

    xlPie

    5

    饼图

    xlBubble

    15

    气泡图

    xlCo1umnClustered

    51

    簇状柱形图

    xlBarClustered

    57

    簇状条形冈

    数据系列(Series)对象

        所有的图表数据都是依据数据系列(Series)绘制的。在Chart对象中,可以使用SeriesCollection集合访问每个数据系列,其语法为:

    Chart.SeriesCollection(Index)

        该表达式将返回一个数据系列(Series)对象。参数index表示数据系列的序号,该序号为从1开始的整数,最大不超过图表中数据系列的个数。

    常用的数据系列(Series)对象的属性和方法见表。

        属性,方法

        说  明

    Points

      数据点的集合.可以通过该方法访问各个数据点( Point)对象进行单独的设置

    DataLabels

      数据标签的集合.

    ChartType

      图表类型。

    Format

      图表的格式属性,可以通过其访问图表格式对象ChartFormat,在该对象下的Fill等属性修改各个数据点的格式

    Values

      图表数据系列的值的来源,可以为单元格区域对象或者一维数组。当在图表中使用SetSourceData方法设置了数据源后;则可以通过该属性得到每个数据系列的值

    添加图表的其他方法

        添加图表共有3种方法,本例展示了通过添加ChartObject对象的方法添加图表。另两种方法如下:

    1.通过添加Chart对象添加图表

        Chart对象和工作表对象同属于工作簿子对象,Chart对象是一个以表格形式呈现的单独的图表。
        Chart对象的添加可以通过Charts集合的Add方法完成,其语法为

    Charts.Add(Before,After,Count,Type)

        该方法可以返回一个Chart对象。参数Before和After可以选择其一。与添加工作表类似,该参数表示图表添加的位置,可以为一个工作表对象或者图表对象。参数Count表示添加的数量。参数Type表示图表的类型。
        Chart对象与工作表中ChartObject的Chart属性所表示的Chart对象是相同的,只是其存放的位置不同而已。当需要在两者之间切换时,可以使用Chart对象的Location方法,该方法的语法为

    Chart.Location(Where,Name)

        参数Where表示图表的位置。该参数可以为xILocationAsNewSheet(将图表单独存放在一个表中)、xILocationAsObject(图表以嵌入的方式存放于工作表中)或者xILocationAutomatic(由Excel自行处理)。
    参数Name表示图表的名称。

    2.通过Shapes集合的AddChart方法添加图表

        使用Shapes集合的AddChart方法同样可以添加一个ChartObject对象,从而添加一个图表Chart对象,其语法为

    Worksheet.Shapes.AddChart(Type,Left,Top,Width,Height )

    参数Type为图表的类型。参数Left、Top、Width、Height表示图表的位置和大小。

        该方法将在工作表中创建一个ChartObject对象,并返回一个Shape对象。由于无法通过Shape对象直接访问Chart对象。因而,使用该方法创建图表一般先使用Select方法选中图表,然后通过ActiveChart对象(当前选中的图表)访问图表Chart对象。创建录制宏代码时,可以发现当创建一个图表时,所录制的代码就是以该方法进行操作的。
     

     

     

    展开全文
  • VBA自动绘制图表.rar

    2021-08-28 09:55:13
    利用VBA动态生成图表,开放源代码,可适当修改后放到自己的项目中
  • Excel VBA创建动态图表

    2019-05-24 01:59:59
    NULL 博文链接:https://jacky2007.iteye.com/blog/369609
  • 采用Microsoft Basic 6.0 编程工具,利用VBA语言通过宏录制技术和嵌入控件及对象技术将Excel应用程序中的数据自动生成图表,并实现Excel工作簿和Word文档两个应用程序之间的数据无缝连接,进而通过Word文档的书签...
  • 如何利用VBA自动生成PPT报告

    千次阅读 多人点赞 2019-06-23 10:06:36
    一开始时候是希望用Python(pptx)来写的,但感觉这个包兼容性不够好,生成图表不能和现有的图型一致,并且该数据模板的制作时间也很长,所以还是用回微软他家的程序好了。(实验证明,①编程都是有...

    本文是继python(多级表头)之后的另一个项目,主要是利用VBA实现自动更新PPT模板的功能。主要是常规的PPT太多了, 不想把时间浪费在Ctrl+C 和Ctrl+V 之间,唯有想想自动化的可行性了;
    一开始时候是希望用Python(pptx)来写的,但感觉这个包兼容性不够好,生成的图表不能和现有的图型一致,并且该数据模板的制作时间也很长,所以还是用回微软他家的程序好了。(实验证明,①编程都是有其共同性的,看懂python,VBA也能大概看懂的;②工具不分等级高低,合适就行。)

    首先,要感谢下周婷同学和网上的大神们,由于他们无私贡献出代码,我才能依葫芦画瓢(zhaochao)写出代码。。

    先上代码,再一行行解释代码的作用。由于本人也是初学VBA,代码比较简陋,请大神们指导一下。谢谢。

    PS:数据处理问题,我都放在excel处理了,所以这个VBA就是搬运数据的功能。。。

    Sub 第一页()
        Dim pp As PowerPoint.Application   
        Dim pReport As PowerPoint.Presentation
        Dim pchtws1 As Worksheet
        Dim wb As Workbook
        Dim sh As Worksheet
        
        Application.ScreenUpdating = False
        
        
        '选定Excel页码
        Set wb = ThisWorkbook
        Set sh = Sheets("P1") 'sh选定P1页
        
    
        '启动PPT的功能,选定已打开的PPT模板。
        Set pp = CreateObject("powerpoint.application")
        Set pReport = pp.ActivePresentation
        
        '选定图表7的数据范围。
        Set pchtws1 = pReport.Slides(1).Shapes("图表 7").Chart.ChartData.Workbook.Worksheets(1)
        '通过excel表格,赋值给ppt对应的图表
        pchtws1.Range("A1:B4").Value = sh.Range("A1:B4").Value
    
         '同上,更新图表8的内容。
        Set pchtws1 = pReport.Slides(1).Shapes("图表 8").Chart.ChartData.Workbook.Worksheets(1) ''修改范围
        pchtws1.Range("D1:E4").Value = sh.Range("D1:E4").Value
        
        
        '更新表格1数据,由于无法直接修改PPT中Table的数据,那我只能把Excel的数据直接黏贴至PPT中。
        '这里面的PasteSpecial ppPasteDefault是默认采用Excel的格式,所以请先固定好Excel的格式。
        '这里的位置由于不是cm制,所以需要转换pt = cm * 72 / 2.54
        sh.Range("A1:B4").Select
        
        Selection.Copy
        
        pReport.Slides(1).Shapes(1).Select
        pReport.Slides(1).Shapes.PasteSpecial ppPasteDefault
        
         Dim h, w, l, t
         
         'cm制
         
         h = 3
         w = 13
         l = 3.1
         t = 12.34
         
         '我每页PPT的表格位置都不同,所以不适用,只适用于固定位置模板,先保留吧。
    '    h = sh.Range("G1").Value
    '    w = sh.Range("G2").Value
    '    l = sh.Range("G3").Value
    '    t = sh.Range("G4").Value
    
        With pp.ActiveWindow.Selection.ShapeRange
        
        'pt制,换算单位:pt = cm * 72 / 2.54
        
            .Height = h * 72 / 2.54
            .Width = w * 72 / 2.54
            .Left = l * 72 / 2.54
            .Top = t * 72 / 2.54
        End With
       
        
        '更新表格2数据
        
        
        sh.Range("D1:E4").Select
        
        Selection.Copy
        
        pReport.Slides(1).Shapes(1).Select
        pReport.Slides(1).Shapes.PasteSpecial ppPasteDefault
        
         
         'cm制
         
         'h = 0.03
         'w = 0.03
         l = 21.59
         t = 12.34
         
    '    h = sh.Range("G1").Value
    '    w = sh.Range("G2").Value
    '    l = sh.Range("G3").Value
    '    t = sh.Range("G4").Value
    
        With pp.ActiveWindow.Selection.ShapeRange
        
        'pt制,换算单位:pt = cm * 72 / 2.54
        
            '.Height = h * 72 / 2.54
            '.Width = w * 72 / 2.54
            .Left = l * 72 / 2.54
            .Top = t * 72 / 2.54
        End With
       
        Application.ScreenUpdating = True
        
        '由于PPT可能出现重名的情况,所以默认不提醒,直接覆盖掉原有PPT。
        Application.DisplayAlerts = False
        
        pReport.SaveAs ThisWorkbook.Path & "\" & Format(Now, "yyyy-MM-dd") & " " & "模板更新" & ".pptx"
        
        Application.DisplayAlerts = True
        
    End Sub
    
    

    参考资料:

    http://www.exceloffice.net/archives/2091
    (介绍了ppt的Application、Presentation、Worksheet等层级的关系。)
    http://www.exceloffice.net/archives/1275
    (介绍如何修改ppt对象的格式)
    https://blog.csdn.net/olivesun88/article/details/50980698
    (介绍如何把数据copy到PPT中)
    https://blog.csdn.net/smking/article/details/4975324
    (介绍VBA操作PPT)
    http://club.excelhome.net/thread-1484716-1-1.html
    (我之前在ExcelHome提问的全过程,也就是我自己的解决问题的过程。。)

    参考资料太多了,就不全写了,感谢无私奉献的互联网er。

    附件贴不上CSDN,请移步去ExcelHome看附件。

    展开全文
  • 常常需要按照excel中的数据来在PPT中生成图表展示出来,有的方法是在excel生成好图表,再复制到ppt中,这里不采用。 这里先将excel数据读进数组,再在PPT中生成图表,将数组中的数据写进图表中的数据源里面,更改其...

    常常需要按照excel中的数据来在PPT中生成图表展示出来,有的方法是在excel生成好图表,再复制到ppt中,这里不采用。

    这里先将excel数据读进数组,再在PPT中生成图表,将数组中的数据写进图表中的数据源里面,更改其数据源的默认区域。

    Sub exctoppt()
    Dim pt As PowerPoint.Application, ob As PowerPoint.Shape, chartsheet As Worksheet
    Dim arr1()
    sourceaddress$ = Range("a1:g" & [a65536].End(xlUp).Row).Address
    arr1 = Range(sourceaddress).Value
    Set pt = CreateObject("powerpoint.application")
    With pt.Presentations.Add
      Set ob = .Slides.Add(Index:=1, Layout:=ppLayoutBlank).Shapes.AddChart2(2, xlLineMarkers, 51, 30, 600, 400, 0)
      Set chartsheet = ob.Chart.ChartData.Workbook.Worksheets(1)
      chartsheet.Cells.Clear
      chartsheet.[a1].Resize(UBound(arr1), UBound(arr1, 2)) = arr1
      ob.Chart.SetSourceData Source:="='sheet1'!" & sourceaddress
      ob.Chart.ChartData.Workbook.Close
    End With
    End Sub

    这里在excel中用的VBA。需要引用microsoft powerpoint****

    展开全文
  • 自动生成VBA窗体菜单

    2010-08-16 15:23:46
    自动生成VBA窗体菜单 '*************************** '* 菜单类 * '*************************** Option Explicit Private WithEvents MenuBar_MenuItem As MSForms.Label '菜单项 Private WithEvents WorkForm As...
  • Sub 自动识别创建数据透视表() Dim sh As Worksheet Dim rng As Range Dim PTC As PivotCache Dim PVT As PivotTable Dim pdata As String Sheets("Sheet1").Copy Before:=Sheets(Sheets.Count) 'sheet1移动到...
    Sub 自动识别创建数据透视表()
        Dim rng As Range
        Dim PTC As PivotCache
        Dim PVT As PivotTable
        Dim pdata As String
        ActiveCell.CurrentRegion.Select
        Set rng = Selection
        ActiveWindow.ScrollColumn = 1
        Set PTC = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rng, Version:=xlPivotTableVersion15)
        Sheets.Add
        pdata = ActiveSheet.Name & "!R3C1"
        Set PVT = PTC.CreatePivotTable(TableDestination:=pdata, TableName:="数据透视表", DefaultVersion:=xlPivotTableVersion15)
        Range("A3").Activate
    End Sub

    按钮封装版下载地址:

    https://download.csdn.net/download/tzx200911911/21713914?spm=1001.2014.3001.5503

    参考文献:

    【VBA研究】用VBA创建数据透视表

    VBA创建数据透视表 备用连接:[转载]VBA创建数据透视表

    展开全文
  • 因为在日常应用中很少用到图表,最近帮同事写一个自动生成报告的功能,需要自动生成很多图表以便添加到他的报告中,看来需要写一写使用代码生成图表的文章,一方面自己留存,一方面能帮助到需要它的人。 运行效果 ...
  • 深夜,没有睡意。因为,再次发现VBA的魅力。 给出一组数据,如下: 可以绘制多少种Excel图表呢? 答案是以下70多种(Excel 2016实测):
  • 用下面代码可以在A7:G13位置生成图表,图表的数据源是sheet2表的A1:B5Sub 在指定位置生成图表() Set ab = Range("a7:g13") '生成图表的位置 Set bbb = ActiveSheet.ChartObjects.Add(0, 0, 0, 0) bbb.Chart....
  • EXCEL利用VBA自由控制图表绘图区大小

    千次阅读 2020-09-30 15:19:32
    用好VBA的话确实可以给你再办公室的工作效率带来质的提升。如果有人跟你说你可以用Python什么的语言处理Excel balabala的,你可以无视他了。...作为新版EXCEL 2019,系统出于安全考虑,开发模式是不自动
  • [Excel VBA]如何制作动态数据图表?

    千次阅读 2019-06-02 09:44:28
    然而,對於辦公室工作族群,Microsoft Excel是再熟悉不過的工具,除了靜態的數據視覺化呈現,其實善用Excel函數搭配Excel VBA,也可以達到不錯的動態數據視覺效果,如上述影片所示。 關於上述動態數據範例,其使用...
  • Excel批量生成minitab图表(自动化)

    千次阅读 2021-02-20 11:29:03
    excel与Minitab的交互是将minitab当做服务端,excel作为客户端,通过调用自动化库,将图表生成的命令和数据发送给minitab,minitab会根据接收到的命令和数据来生成图表,生成出来的图标,再自动的导入到excel表格中...
  • 方案主要解决如何通过按钮一次完成实现表格自动生成统计图表。使用对象需要统计出各种直方图、饼图、趋势图需要的人员。功能概述1.自动选择表格,自动化生成统计图表。2.自动设置图表式样、格式3.设置按钮,满足...
  • 目录 环境说明逻辑结构效果说明及截图①. 安装SecureCRT②.... 自动生成图表并邮件发送 环境说明 系统: Windows Server 2003, Windows Server 2008 Windows Server 2003上目录结构: Windows Server 2...
  • vba控制图表,excel图表,一键完成

    千次阅读 2019-10-01 15:18:05
    来源... 官方教程链接 https://docs.microsoft.com/zh-cn/office/vba/api/excel.worksheet.chartobjects 运行宏就显示图表 Sub test() Dim ch As ChartObject, ws As W...
  • 本文测试文档下载地址:百度文库 随着义教均衡发展工作的稳步推进,要求学校功能室实行规范化管理。若有报废或新增等仪器设备变动,则必须...也可使用Excel内置的系统开发工具VBA(Visual Basic for Application)对E...
  • VBA与Excel进阶系列-01-图表(上篇)

    千次阅读 2017-08-05 11:11:05
    Excel中使用VBA自动生成图表
  • VBA常用技巧

    2013-03-25 21:10:12
    技巧60使用VBA自动生成图表143 技巧61使用独立窗口显示图表147 技巧62导出工作表中的图表148 技巧63多图表制作149 第5章Application对象153 技巧64取得Excel版本信息153 技巧65取得当前用户名称154 技巧66Excel中的...
  • 使用VBA完成Excel 图表Y轴上下限的动态设置
  • 我正在尝试创建一个包含正文文本和表格的电子邮件,该表格可以自动生成给定的数据集 . 现在,我从单独的工作表中提取所有输入的数据,然后您只需从下拉列表中选择一个人名称并自动填充数据 . 我希望将所需列中的数据...
  • 批量生成Excel的简单Word报告/vba/录制宏 Sub piliangshengcheng() Set dd = CreateObject("excel.application") dd.workbooks.Open ("D:\ALM数据分析\VBA\第三天\二手车.xlsx") dd.sheets(&...
  • 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • vba自动选取wind更新数据,作series图

    千次阅读 2019-11-20 17:08:02
    每次wind刷新之后,series的范围都需要重新拖一下,感觉非常麻烦,就用vba改了下~ Sub update_chart() Dim rng As Range Dim i As Integer Set rng = ActiveSheet.Range("n2000").End(xlUp) i = rng....
  • 但是设置ChartObject的宽度和高度或它的Shape不会这样做,它们似乎只是该白色矩形的一些内部部分,即嵌入图表. ChartArea似乎也不是我感兴趣的对象.我想要的是在下面的例子中导出的文件的尺寸为800×600(我并不意味着...
  • VBA 发送邮件的正文图片插入方法——HTML引用附件法 {"作者":"Antoniothefuture" "关键词":["VBA","Outlook","发送邮件","HTML"...近期在做一个批量发送邮件的VBA程序,文本可以发,但是插入图片时遇到了难题...
  • 适用于导出数据库的结构(表、字段等)到Word或将体检数据自动生成Word版的体检报告等。代码:Github 一、主要需要完成功能: 1. 灵活的配置规则及word样式设置(文本、表格、图表、颜色等). 2. 支持表格. 3. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,455
精华内容 582
关键字:

vba自动生成图表

友情链接: motorspeedsurveysystem.rar