使用VBA实现EXCEL批量生成图表并发送

使用VBA实现EXCEL批量生成图表并发送
使用VBA实现EXCEL批量生成图表并发送

使用EXCEL VBA实现图表批量生成并发送

业务需求

office word2007的邮件合并功能是财务、文秘类工作经常使用的功能之一,该功能可以生成包含可变内容的批量邮件文档,广泛适用于发送工资条、成绩单、通知书等,这里不再赘述。笔者所在单位最近为加强员工考核管理工作力度,提出了一个类似于邮件合并功能,但使用邮件合并功能却不能实现的需求,下面用文字结合图表描述:

1.将员工百分制考核结果批量以图表(折线图)反应出来,每一条员工数据均生成一个类似于下图右侧的图表。

(图1)

2.使用类似于邮件合并方式实现员工考核图表的批量发送,将生成的图表插入邮件正文分别发送给每位员工。

(图2)

解决思路

思路一:使用https://www.360docs.net/doc/767446877.html,+Sqlserver(或ACCESS等,下同)开发一个网站,设置好权限,允许员工查看自己的反馈结果。

思路评价:可行,但达不到设想中的推送效果。

思路二:使用https://www.360docs.net/doc/767446877.html,+Sqlserver开发一个系统,内置图表模板,图表基于固定区域数据生成;为每位员工复制一份作为报表,将该员工数据填写到固定区域;将每位员工的报表作为附件发送给每位员工。

思路评价:可行,但开发量大,效果不直观。

思路三:使用https://www.360docs.net/doc/767446877.html,+Sqlserver开发一个系统,使用VS2008版以上自带控件或第三方控件如dotnetcharting,为每位员工生成一张图片,将该图片插入邮件发送给每位员工。

思路评价:可行,但开发量大。

思路四:使用excel VBA为每位员工生成一张图片,将该图片插入邮件发送给每位员工。这个思路一开始并没有列入考虑范围,主要原因是当时认为在excel中为每位员工生成一个图表是不可能的,即使能生成也没办法脱离excel工作薄,分别和员工对应起来并发送。最终采用本思路,是缘于笔者发现VBA可以非常容易地把图表导出为图片。

思路评价:可行,事实证明,开发量比想象的小很多。

开发环境准备

1.在运行该程序的电脑上安装Office Excel2007或以上版本;

2.正确配置OUTLOOK使之能够正常发送邮件;

3.打开Excel2007新建工作薄,把测试数据输入到sheet1工作表,把工作薄保存到工作目录(为方便后文描述,这里的目录设为“E:\excel-vba”),在该目录下新建“imgfile”子目录,以存放图片。示例数据如下:

注意:附件路径是个公式:=concatenate(“E:\excel-vba\imgfile\”,A1,”.jpg”) 含义是图片以员工姓名命名,这意味着员工姓名不可重复。

4.完成宏安全设置,如图所示:

(图3)

实现过程

这个业务需求实现包含两个难点,一是为每位员工生成对应的图片;二是批量发送带图片的邮件。基于这两点,笔者在excel工作薄中设置了两个按钮,编写了两段代码,分别对应上述两个问题。事实上,这两段代码完全可以整合到一起,这里为了方便理解,还是分开介绍。笔者采取代码中加入注释的方式帮助大家理解代码含义。

第一步,在sheet1中加入两个按钮,分别命名为“批量生成图表”和“批量发送邮件”。

第二步,分别为两个按钮指定如下宏代码:

Sub 批量生成图表()

Dim myChart, Ra As ChartObject

Dim myFileName As String

Dim i, j As Integer

With Sheet1

'先虚加一个图表对象,解决下文循环开头删除空集问题

Set myChart = .ChartObjects.Add(520, 40, 400, 250)

'取数据总行数,第一行为标题,最后一行为平均值

j = Sheet1.[b65536].End(xlUp).Row

'从第2行开始循环,i代表第几行

For i = 2 To j - 1

'清除原有图表

.ChartObjects.Delete

'.指定图表位置和大小

Set myChart = .ChartObjects.Add(520, 40, 400, 250)

With myChart.Chart

'第一个数据系列,员工各项考核值

.ChartType = xlLineMarkers

.SeriesCollection.NewSeries

.SeriesCollection(1).XValues = Sheet1.Range("b1:e1")

.SeriesCollection(1).Values = Sheet1.Range("b" & i & ":e" & i)

.SeriesCollection(1).Name = Sheet1.Range("a" & i)

'第二个数据序列,各项考核平均值,位于sheet最后一行

.SeriesCollection.NewSeries

.SeriesCollection(2).XValues = Sheet1.Range("b1:e1")

.SeriesCollection(2).Values = Sheet1.Range("b" & j & ":e" & j)

.SeriesCollection(2).Name = Sheet1.Range("a" & j)

'.指定图表生成的位置

'.Location Where:=xlLocationAsObject, Name:="Sheet1"

'显示标签值

.ApplyDataLabels ShowValue:=True

'显示图表标题

.HasTitle = True

.ChartTitle.Text = "员工考核反馈"

'.设置图表标题的字体

With .ChartTitle.Font

.Size = 20

.ColorIndex = 3

.Name = "华文新魏"

End With

'.设置图表区域的颜色

With .ChartArea.Interior

.ColorIndex = 8

.PatternColorIndex = 1

.Pattern = xlSolid

End With

'.设置绘图区域的颜色

With .PlotArea.Interior

.ColorIndex = 35

.PatternColorIndex = 1

.Pattern = xlSolid

End With

'.设置是否显示Y轴刻度

myChart.Chart.HasAxis(xlValue, xlPrima ry) = True

Set myChart = Sheet1.Cha rtObjects(1).Chart

'使用第一列值命名图像,请勿重复

myFileName = Sheet1.Cells(i, 1) & ".jpg"

On Error Resume Next

'.删除原有同名文件

Kill ThisWorkbook.Path & "\imgfile\" & myFileName

'.将图表转换为图像并输出到指定目录,使之与H列的值相对应

myChart.Export Filename:=ThisWorkbook.Path & "\imgfile\" & myFileName, Filtername:="JPG"

End With

'.清空对象

Set myChart = Nothing

Next i

End With

End Sub

Sub 批量发送邮件()

''要能正确发送并需要对Microseft Outlook进行有效配置

On Error Resume Next

Dim rowCount, endRowNo

'要正常运行下面这句,要将工具/引用中的Microseft Outlook 12.0 Object Library选上

Dim objOutlook As New Outlook.Application

Dim objMail As MailItem

'取得当前工作表与Cells(1,1)相连的数据区行数

endRowNo = Cells(1, 1).CurrentRegion.Rows.Count

'创建objOutlook为Outlook应用程序对象

Set objOutlook = New Outlook.Application

'开始循环发送电子邮件

For rowCount = 2 To endRowNo - 1

'创建objMail为一个邮件对象

Set objMail = objOutlook.CreateItem(olMailItem)

With objMail

'设置收件人地址(从通讯录表的'E-mail地址'列中获得)

.To = Cells(rowCount, 7)

'设置抄送人地址(从通讯录表的'抄送E-mail地址'列中获得)

'.CC = Cells(rowCount, 2)

'设置邮件主题

.Subject = Cells(rowCount, 6) & "(" & Cells(rowCount, 1) & ")"

'设置邮件内容格式,这里选择HTML

.BodyFormat = olFormatHTML

'设置邮件内容(从通讯录表的'内容'列中获得),这里的内容本质上是个网页,可先使用网页开发工具调整好格式,然后把源码粘贴到此处

.HTMLBody = "

员工考核反馈(" & Cells(rowCount, 1) & ")

"

'设置附件(如果以附件形式发送的话,这里选择不加附件)

'If Range("H" & rowCount).Value <> "" Then

'.Attachments.Add Range("H" & rowCount).Value

'End If

'显示邮件

.Display

'发送邮件

.Send

End With

On Error GoTo continue

continue:

On Error GoTo 0

' Set bjOutlook = Nothing

Set objMail = Nothing

Next

'销毁objOutlook对象

Set objOutlook = Nothing

'所有电子邮件发送完成时提示

MsgBox rowCount - 2 & "个员工的反馈信息发送成功!"

'如果发送成功,关闭Excel,这里选择不退出

If Application.Workbooks.Count = 1 Then

'Application.Quit

Else

'Workbooks("excel-vba.xls").Close

End If

End Sub

第三步,单击“批量生成图表”,程度运行结束后,在“imgfile”目录下可以看到每行

数据生成的图像文件;

第四步,单击“批量发送邮件”,程序运行结束后,每行数据对应的邮箱将收到类似图2的邮件。

结语

借助Excel VBA的强大功能,通过控制生成图表的参数,可以生成形式多样的图表。由于微软办公套件之间的协同性极强,使用VBA可以生成图文并茂的邮件并批量推送,充分体现数据价值。

Excel图表生成技巧

?首先,将光标放在表格数据单元格中,按Ctrl+A选中全部表格(有数据内容的表格); ?在表格右下角可以找到一个小方块,切换到【图表】选项卡; ?选择你需要的图表类型就可以自动生成图表了。 02如何复制图表格式 ?光标选中已经生成的图表绘图区并复制; ?选中想要复制的图表绘图区域; ?点击【选择性粘贴】-【格式】,就可以将复制的图表格式粘贴到指定图表中啦。

当我们想要修改图例时,请先选中图例,然后在顶部编辑栏,修改并编辑需要修改的内容即可。 04如何创建动态图表 ?选中已经生成图例的表格; ?点击【插入】-【筛选器】-【切片器】; ?生成切片栏后,点击相关内容,图表即可随着切换。

?在Excel工作表,在数据表格中添加一个平均值的辅助列; ?在辅助系列单元格中输入average函数计算出平均值,下拉平均值单元格得到数据; ?然后选中全部数据,插入柱状图,在图表中选择“平均值系列”; ?选择“更改图表类型”,将辅助列图形改为折线图,点击“确定”就可以完成绘制啦! 06如何调整标签位置 ?在Excel软件中打开制作好图表的工作簿; ?右键调出【设置数据标签格式】选项卡,然后调整数据标签所在的位置即可。

?选中折线图,鼠标右键调出菜单栏,然后选择【设置数据系列格式】; ?在弹出的对话框中,左侧勾选【线型】; ?右侧勾选【平滑线】; ?点击【关闭】窗口,图表的折现样式就转变为了平滑线样式。 08Excel如何快速添加标题 ?选中图表标题,显示标题; ?在单元格内修改标题,图表内的标题也会随之改变; ?按住Ctrl键,选中图表和图表标题,点击【图片工具】-【组合】,将图表标题与图表组合在一起就好了。

Excel VBA_批量自动制图表实例集锦

1, 自动生成图表 ‘https://www.360docs.net/doc/767446877.html,/thread-1058346-1-1.html ‘统计报告0925a.xls ‘2013-9-25 Sub lqxs() Dim Arr, ks, js, nm1$, nm2$, dz1$, dz2$ Dim dz$, dz3$, yy$, nm$ Application.ScreenUpdating = False Sheet3.Activate Arr = [a1].CurrentRegion ks = 3: js = UBound(Arr) - 1 nm = https://www.360docs.net/doc/767446877.html, yy = Left(nm, Len(nm) - 3) nm1 = "图表6" nm2 = "图表4" dz = "A2:B" & js & ",D2:E" & js ActiveSheet.ChartObjects(nm1).Activate With ActiveChart .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:=xlColumns .SeriesCollection(1).Select dz1 = "R3C2:R" & js & "C2" .SeriesCollection(1).Values = "='" & nm & "'!" & dz1 dz2 = "R3C4:R" & js & "C4" .SeriesCollection(2).Values = "='" & nm & "'!" & dz2 dz3 = "R3C5:R" & js & "C5" .SeriesCollection(3).Values = "='" & nm & "'!" & dz3 .ChartTitle.Select Selection.Characters.Text = yy & "月份合格率" End With ActiveSheet.ChartObjects(nm2).Activate With ActiveChart .ChartArea.Select dz = "H2:T2,H" & js + 1 & ":T" & js + 1 .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:= _ xlRows dz2 = "R" & js + 1 & "C8:R" & js + 1 & "C20" .SeriesCollection(1).Values = "='" & nm & "'!" & dz2 .ChartTitle.Select Selection.Characters.Text = yy & "月份不良趋势统计" End With Range("A" & ks).Select

excel数据图表练习题

数据图表、数据筛选、分类汇总1、以下关于图表的说法中,不正确的是( )A 、图表可单独打印B 、内嵌图表不能单独打印,只能和工作表一起打印C 、通常独立图表中的图像大小不是实际大小D 、双击图表可以激活该图表2、Excel 2003下的购图书记表中,要选择所有价格在25至40元之间(含边界),出版社为文艺出版社或教育出版社,且页数大于500页的记录,若使用高级筛选,其条件区域的写法应为( ) (2010年高考) A B .价格价格出版社页数>=25<=40文艺出版社>500>=25 <=40教育出版社>500 C.价格出版社页数>=25价格价格出版社出版社页数>=25<=40文艺出版社教育出版社>500、管路敷设技术通过管线敷设技术不仅可以解决吊顶层配置不规范高中资料试卷问题,而且,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中

Excel VBA实例教程 #060:使用VBA自动生成图表

在实际工作中我们常用图表来表现数据间的某种相对关系,一般采用手工插入的方式,而使用VBA代码可以在工作表中自动生成图表,如下面的示例代码。 1.Sub ChartAdd() 2. Dim myRange As Range 3. Dim myChart As ChartObject 4. Dim R As Integer 5. With Sheet1 6. .ChartObjects.Delete 7. R = .Range("A65536").End(xlUp).Row 8. Set myRange = .Range("A" & 1 & ":B" & R) 9. Set myChart = .ChartObjects.Add(120, 40, 400, 250) 10. With myChart.Chart 11. .ChartType = xlColumnClustered 12. .SetSourceData Source:=myRange, PlotBy:=xlColumns 13. .ApplyDataLabels ShowValue:=True 14. .HasTitle = True 15. .ChartTitle.Text = "图表制作示例" 16. With .ChartTitle.Font 17. .Size = 20 18. .ColorIndex = 3 19. .Name = "华文新魏" 20. End With 21. With .ChartArea.Interior 22. .ColorIndex = 8 23. .PatternColorIndex = 1 24. .Pattern = xlSolid 25. End With 26. With .PlotArea.Interior 27. .ColorIndex = 35 28. .PatternColorIndex = 1

Excel图表:创建基本图表

Excel图表:创建基本图表 前面我们在Excel实例系列中学习了很多基础知识和技能,包括图解Excel入门、Excel数据的输入、Excel公式与函数的使用等等。接下来我们将继续通过实例的形式学习一个非常有趣的内容,即Excel图表的制作。 Excel图表可以将数据图形化,更直观的显示数据,使数据的比较或趋势变得一目了然,从而更容易表达我们的观点。 本课我们将通过“图表向导”创建最基本的图表。为了方便想一起进行下面操作的读者朋友,文章末尾提供了原文件供大家下载参考,朋友们可以先下载它到本地电脑,然后打开它和下面的步骤一同操作。 实例背景:小张是一名销售主管,他负责管理三个部门,快到年终了,为了用Excel 统计分析销售情况,他把三个部门2004年第四季度的销售业绩输入到了Excel工作表中(图1)。 为了让三个部门的业绩情况更直观的表显示,他将通过Excel“图表向导”,将数据转化为图表。 思路分析:利用“图表向导”制作图表,首要的一步是选择生成图表的数据区域,接下来根据“图表向导”的提示一步一步操作即可快速生成基本的图表。 操作步骤: 一、创建图表 1. 打开“创建基本的图表(原始文件)”工作薄文件,进入“练习”工作表,选中需要生成图表的数据区域“A1:D4”。 2. 单击“常用”工具栏上的“图表向导”按钮(图2)。或者选择菜单“插入→图表”命令。打开“图表向导”对话框。

3. 默认“图表类型”为“柱形图”和子图表类型(图3),单击下方的“按下不放可查看示例”按钮,可以看到将得到的图表外观的预览。 4. 直接单击“完成”按钮,将在当前工作表中得到生成的图表(图4)。

数据自动输入

1.数据自动输入 在Excel中,数字、日期和时间等形式的数据可以直接连续 输入。例如,当需要输入12/10/91~12/10/99这些连续的日期,可以先在第一个单元格中输入12/10/99,然后用鼠标选 中该单元格,接着再用鼠标直接拖动单元格右下角的填充柄,按照需要水平向右或者垂直向下移动,即可自动在相邻的单 元格中填充12/10/91、12/10/92……12/10/99数据。当然你也可以单击填充柄,选择需要的序列方式()。对于数字而言,还可以实现等差数列和等比数列的连续输入。 2.在Excel中快速计算一个人的年龄 Excel中的DATEDIF() 函数可以计算两单元格之间的年、月或日数。因此,这个函数使得计算一个人的年龄变得容易了。在一个空白工作表中的A1单元里输入生日,用斜线分隔年、 月和日,在A2单元中输入type =DATEDIF(A1,TODAY(),"y") ,然后按Enter,这个人的年龄(以年表示)将被显示在A2单元中。 3.快速修改单元格次序

在实际操作的过程中,我们有时需要快速修改单元格内容的次序,具体操作方法为:首先用鼠标选定单元格,同时按下键盘上的Shift键,接着移动鼠标指针到单元格边缘,直至出 现拖放指针箭头,然后进行拖放操作。上下拖拉时鼠标在单 元格间边界处会变成一个水平“工”状标志,左右拖拉时会 变成垂直“工”状标志,释放鼠标按钮完成操作后,单元格 间的次序即发生了变化。 4.将网页上的数据引入到Excel表格中 网页上表格形式的信息可以直接从浏览器上复制到Excel中,而且效果极佳。在Excel中,你可以像使用Excel工作表那 样打开Html文件,并获得同样的功能、格式及编辑状态。 一、图形和图表编辑技巧 5.在网上发布Excel生成的图形 Excel的重要功能之一就是能快速方便地将工作表数据生成 柱状、圆饼、折线等分析图形。要想在Web发布这类以及用 于报表装饰示意类图形,首先单击“工具→选项”命令,在“常规”中选择“Web选项”,选择是否采用便携网络图形

Eexcel生成图表教案

Eexcel生成图表教案 一、教学内容设计背景与教学对象分析 本课采北师大版信息技术初中第二册第一单元《用电子表格处理数据》第五课《生成图表》为教学依据。在本课教学中,将数学课有关知识融入到信息技术课中来,通过观察、思考、想象,提高学生的信息技术素养。本课的教学对象初三年级学生在学习Excel图表的过程中,我发现图表可以直观地反映各数据的分布变化情况及对比关系,而学生在数学课(初二)《统计的初步认识》一章中学会如何用统计图表示各部分数量的大小、百分比结构、变化趋势和规律等知识,因此,我利用Excel的创建图表功能来快速地绘制出各种类型图表,帮助学生分析处理数据,做出合理的决策。这样把学科知识的学习和能力的培养与其它学科的教学紧密结合起来,使学生在解决各种问题的过程中学习并掌握信息技术,同时也使信息技术潜移默化地融入学生的知识结构中去。 二、教学目标 1、认知目标:结合教学统计图的知识,能学会利用Excel创建图表的方法;能掌握各种图表类型的特点。 2、技能目标:运用信息技术的基本知识,解决数学知识; 能选用合理的图表类型分析数据,做出合理决策。 3、情感目标:培养学生严谨的科学态度及用于创新的精神。 三、教学重点和难点 1、根据实际问题选择适当的图标类型 2、创建图表的源数据的选择 四、教学策略 以主体教育理论为指导,在教学中以学生的学习为本,贯穿学生自主学习、主动探索、合作学习的教学要求,发挥学生的主动性、能动性和创造性,同时要发挥教师的引导、辅导、组织参与、评价等主导作用。培养学生运用信息技术的基本知识,解决数学知识。整个教学可按照以下模式进行:教师示范引导——学生实践反馈——教师评价分析——学生巩固、提高练习。 五、教学媒体 教师:计算机、多媒体教学系统的配合使用 学生:计算机的配合使用 六、教学课时数 1课时 七、教学过程 (一)引入 在数学《统计的初步认识》一章中同学们已经学习了根据统计的数据表,画出合适的统计图,来直观形象地反映数据,帮助我们分析数据,做出合理的决策,但是画统计图比较繁琐,Excel 可以快速地帮我们创建图表,不信吗?那我们来试一试吧。 [分析]引发学生好奇心、探究心,激发学生的求知欲望,进而揭示本课学习内容,调动学生的学习兴趣。 (二)示范引导学习 利用“我的成绩表”创建图表,分析自己各科的学习状况。 1、图表向导4步骤:思考两个问题为什么要用折线图?如何选择不连续的数据区域? 2、利用图表分析数据 3、使用批注:插入——批注 [分析]教师用多媒体控制平台同步演示学生直观学习,发挥教师的主导作用,对新知识进行

VBA自动生成图表

Sub BatchPlot() Dim i For i = 2 To 10 Charts.Add '增加一个图表 ActiveChart.ChartType = xlLineMarkers '设置图表类型为折线图 ActiveChart.SetSourceData Source:=Sheets("批量绘图").Range("A1:D1," & "A" & i & ":D" & i), PlotBy:=xlRows '设置图表的数据源 ActiveChart.Location Where:=xlLocationAsObject, Name:="批量绘图" '设置图表的位置为当前工作表中 ActiveChart.Parent.Top = 220 * (i - 2) '设置图表的上下间隔为220磅 ActiveChart.Parent.Left = 456 '设置图表距左为456磅 Next i End Sub 以完成的 Sub BatchPlot() 'Set ab = Range("H7:Q23") '生成图表的位置 Set ab = Range(Cells(7, 8), Cells(23, 17)) Set bbb = ActiveSheet.ChartObjects.Add(0, 0, 0, 0) bbb.Chart.ChartType = xlLineMarkers '折线图 bbb.Chart.SetSourceData Source:=Sheets("Sheet1").Range("C1:C128") '数据源 'ActiveChart.Location Where:=xlLocationAsObject, Name:="批量绘图" '设置图表的位置为当前工作表中 With bbb .Top = ab.Top .Left = ab.Left .Width = ab.Width .Height = ab.Height End With End Sub

利用VBA自动提取CAD图纸明细表并进行数据库管理

自动提取CAD图纸明细表及数据库管理的研究与实践 本文TAG:工程图明细表自动提取AutoCAD数据库管理2008-10-21 作者:尹胜安出处:e-works 阅读:1582 推荐:0 本文详细介绍了如何开发应用AutoCAD来自动提取CAD图纸明细表及管理数据库,其切切实实的 为设计工作节约了大量的时间。 制造企业工程技术人员在利用CAD进行产品设计时产生大量的DWG文件,每一个DWG文件中包含一张或数张图纸,设计的基础资料如:工程项目、图号、设备(物料)名称、型号规格、材质、数量、重量、备注等等文本信息都记录在图纸标题栏明细表中。设计工作完成后,工艺编制、成本预算、物料消耗、物流采购、计划调度、车间生产等项管理业务都将依据图纸进行操作。在通常的管理中,各业务部门往往通过人工的方式从CAD图纸或纸质图纸明细表中获取技术文件数据,再利用WORD或EXCEL 进行手工二次录入,编制各自需要的明细表、经过汇总,生成相应的报表,并在此基础上产生工艺技术文件通俗简称为(工单),按不同的用途也有的称之为物料消耗单、物料清单BOM等。这种单页面的文本制作方式虽然使用了电脑操作,但并未能摆脱繁重的手工录入和编辑工作,不能进行数据的自动处理,存在图纸与制表数据不一致、差错率高、工作量大、编制周期长、效率低下、查询繁琐、数据不能共享等多种弊端。因此,采用自动提取CAD明细表与进行数据库管理的方法是克服以上弊端提高企业设计、技术、管理效率和工作质量的有效途径。 AutoCAD是AutoDesk公司开发的通用CAD工作平台,在机械、造船、电子、汽车、测绘、建筑等许多行业中得到广泛的应用,其完善的图形绘制和编辑功能,多种接口文件,较强的数据交换能力,特别是开放的二次开发功能给用户提供了有力的技术支撑。 Microsoft VBA (Visual Basic for Application) 是一个面向对象的可视化编程环境,它是由Visual B asic派生而来,AutoCAD内嵌的VBA提供了与Visual Basic相似的丰富的开发能力。AutoCAD从R14版开始增加了作为ActiveX Automation服务器应用程序的功能,这是一个功能强大的接口,它提供了一系列开放的对象,通过这些对象,VBA应用程序便可以对AutoCAD进行编程控制。AutoCAD2000及以

使用VBA实现EXCEL批量生成图表并发送

使用EXCEL VBA实现图表批量生成并发送 业务需求 office word2007的邮件合并功能是财务、文秘类工作经常使用的功能之一,该功能可以生成包含可变内容的批量邮件文档,广泛适用于发送工资条、成绩单、通知书等,这里不再赘述。笔者所在单位最近为加强员工考核管理工作力度,提出了一个类似于邮件合并功能,但使用邮件合并功能却不能实现的需求,下面用文字结合图表描述: 1.将员工百分制考核结果批量以图表(折线图)反应出来,每一条员工数据均生成一个类似于下图右侧的图表。 (图1) 2.使用类似于邮件合并方式实现员工考核图表的批量发送,将生成的图表插入邮件正文分别发送给每位员工。 (图2) 解决思路 思路一:使用https://www.360docs.net/doc/767446877.html,+Sqlserver(或ACCESS等,下同)开发一个网站,设置好权限,允许员工查看自己的反馈结果。 思路评价:可行,但达不到设想中的推送效果。 思路二:使用https://www.360docs.net/doc/767446877.html,+Sqlserver开发一个系统,内置图表模板,图表基于固定区域数据生成;为每位员工复制一份作为报表,将该员工数据填写到固定区域;将每位员工的报表作为附件发送给每位员工。 思路评价:可行,但开发量大,效果不直观。

思路三:使用https://www.360docs.net/doc/767446877.html,+Sqlserver开发一个系统,使用VS2008版以上自带控件或第三方控件如dotnetcharting,为每位员工生成一张图片,将该图片插入邮件发送给每位员工。 思路评价:可行,但开发量大。 思路四:使用excel VBA为每位员工生成一张图片,将该图片插入邮件发送给每位员工。这个思路一开始并没有列入考虑范围,主要原因是当时认为在excel中为每位员工生成一个图表是不可能的,即使能生成也没办法脱离excel工作薄,分别和员工对应起来并发送。最终采用本思路,是缘于笔者发现VBA可以非常容易地把图表导出为图片。 思路评价:可行,事实证明,开发量比想象的小很多。 开发环境准备 1.在运行该程序的电脑上安装Office Excel2007或以上版本; 2.正确配置OUTLOOK使之能够正常发送邮件; 3.打开Excel2007新建工作薄,把测试数据输入到sheet1工作表,把工作薄保存到工作目录(为方便后文描述,这里的目录设为“E:\excel-vba”),在该目录下新建“imgfile”子目录,以存放图片。示例数据如下: 注意:附件路径是个公式:=concatenate(“E:\excel-vba\imgfile\”,A1,”.jpg”) 含义是图片以员工姓名命名,这意味着员工姓名不可重复。 4.完成宏安全设置,如图所示: (图3) 实现过程 这个业务需求实现包含两个难点,一是为每位员工生成对应的图片;二是批量发送带图片的邮件。基于这两点,笔者在excel工作薄中设置了两个按钮,编写了两段代码,分别对应上述两个问题。事实上,这两段代码完全可以整合到一起,这里为了方便理解,还是分开介绍。笔者采取代码中加入注释的方式帮助大家理解代码含义。

3.5 在Excel中创建图表

3.5 在Excel中创建图表 3.5.1.Excel中创建图表 Excel 2010图标类型丰富、创建灵活、功能全面、作用强大,可以把不同数据之间的关系更加形象的表示出来,方便用户更加容易的观察到数据的变化。 1.图表的类型 Excel 2010提供了以下几大类图表,其中每个大类中又包含很多子类型,如表3-3所示。 表3-3 Excel的图表类型 2.图表的组成 下面以柱形图为例介绍图表的组成,如图3-61所示。

图3-61 图表的组成 各项功能如表3-4所示。 表3-4 图表组成及功能 3.创建图表 下面以素材文件夹中的“电子产品季度销量表.xlsx”为例,对如何创建图表进行详细讲

解。 步骤1:首先新建一个工作簿,并输入相关的数据,此处打开随书附带光盘中的CDROM|素材|第3章|电子产品季度销量表.xlsx。 说明:对于创建图表所需要的数据,应按照行或列的形式进行组织排列,并在数据的左侧和上方设置相应标题,标题最好是以文本的形式出现。 步骤2:选择需要创建图表的单元格区域,此处选择A2:E7单元格区域。 步骤3:在【插入】|【图表】组中选择一种图表类型,然后在其下拉列表中选择该图表类型的子类型。用户也可以在【图表】选项组中单击对话框启动器按钮,即可打开如图3-62所示的“插入图表”对话框,可以从中选择一种合适的图表类型。此处选择“柱形图”中的“簇状柱形图”。单击“确定”按钮,即可将图表插入表中。 图3-62 选择图表的类型 步骤4 :移动图表位置:光标移动到图表的空白位置,当光标变为时,按着鼠标左键拖动到合适的位置即可。 步骤5:改变图表大小:将光标移动到图表外边框上的四边或四个角的控制点位置,当鼠标指针变为或时,按着鼠标左键拖动调整到合适的大小。 4.将图表移动到新的工作表中 下面介绍如何将插入的图表移动到一个新的工作表中,其具体操作步骤如下:

EXCEL如何制作图表详细图文教程

EXCEL如何制作图表详细图文教程 Microsoft Excel 2000在企业办公、数据处理等方面具有强大的功能。但是,对于如何根据Excel工作表中的数据来创建图表及生成链接,许多人却知之甚少。下面我们以某工厂1990年至1995年的工业年生产总值为例,来说明柱形图表的生成与链接过程。 制作图表 Microsoft Excel 2000的图表模板很多,在生产和销售中,经常用柱形图来描述,这样,有利于看出并分析其变化趋势。制作图表的步骤如下: 1、选定年份和生产总值两行数值,单击[图表向导],如图1。在图表向导对话框中图表类型选择柱形图,子图表类型选择簇状柱形图,单击[下一步]。 图1 2、在图表源数据的数据区域中出现“=Sheet1!$A$3:$G$4”,“系列产生在”选择“行” ,在系列中的分类X轴标志中填入“=Sheet1!$B$3:$G $3”,系列对话框中删除“年份”,单击[下一步],如图2。 图2 3、在图表选项中填入图表标题,X轴和Y轴的名称,单击[下一步]。 4、在图表位置的“作为其中的对象插入”中填入“Sheet1”,单击[完成]即可生成图表,如图3所示。

图3 为图表美容 图表生成以后,中间的图形太小,周围的文字又太大,看起来很不舒服,我们可以加以修饰,使其美观大方。具体做法如下: 1、单击鼠标右键,弹出对话框,选中[图表区格式],弹出图表区格式对话框,首先显示的是图案选项卡,选中[阴影(D)]。单击[填充效果]按钮,在填充效果对话框中您可以选择您喜欢的背景效果,我们在过渡选项卡中选择“单色”、“浅绿色”,将颜色调到合适的深度,如图4,再选择默认的底纹样式“横向”,单击[确定]。 图4 2、以同样的方式修饰绘图区和数据系列区。 3、现在,图表中的文字有些大,绘图区又小。单击图表的纵轴,在字号栏中选择小一点的字体,或双击纵轴对其进行多项修饰如字体、字号、加粗、刻度等。然后以同样的方法修饰横轴。 4、对图表标题和图例进行修饰,修改字体、字号以及填充效果等,基本和

Excel VBA编程 使用VBA创建图表

Excel VBA编程使用VBA创建图表 VBA也是一种宏语言,它可以使用手动方法将较为复杂的宏编写成VBA代码,从而完成某种功能的实现。本节介绍如何使用VBA代码来创建图表。 在VBE窗口中,新建一个模块。然后,打开该模块代码窗口,输入如图17-3所示的创建图表的代码。 输入 图17-3 输入创建图表的代码 其中,输入的创建图表的代码如下: Sub 图表() ' 选择A2至B7单元格区域 Range("A2:B7").Select ' 激活工作区选择添加图表选项 ActiveSheet.Shapes.AddChart.Select ' 激活图表选择工作表1中的A2至B7单元格区域 ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$B$7") 选择图表类型为饼图 ActiveChart.ChartType = xlPie End Sub 在上面的代码中,主要包含以下几点内容: ●Shapes.Range 属性 该属性返回一个ShapeRange对象,它代表Shapes集合中形状的子集,其语法为:表达式.Range(Index) 其中,表达式为一个代表Shapes对象的变量。参数Index为必选参数,包含该区域中的各单个形状,可以是指定形状索引号的整数、指定形状名称的字符串,也可以是包含整数或字符串的数组。 ●Chart.SetSourceData 方法 该方法为指定图表设置源数据区域,其语法为:表达式.SetSourceData(Source, PlotBy) 其中,表达式为一个代表Chart对象的变量。参数Source为必选参数,为包含源数据的区域。参数PlotBy 为可选参数,为指定数据绘制方式。 ●Chart.ChartType 属性 该属性返回或设置图表类型,其语法为:表达式.ChartType。其中,参数ChartType表示图表类型。 完成代码的编辑之后,用户可以单击VBE窗口中的【运行宏】按钮,即可在工作表中生成一个饼图,如图17-4所示。

EXCEL图表制作与修改

Excel图表类型的修改 一、修改图表的类型 当图表创建完成以后,如果需要修改图表的类型,直接调用“图表类型”命令即可。 1. 打开“修改图表类型(原始文件)”工作薄文件,进入“修改图表类型”工作表,可以看到一个已经创建好的图表,使用的类型是“柱形图”。 2. 假设我们的目标是想把该图表的类型该为“折线图”。用鼠标单击图表边缘,图表的四周出现了八个黑色的小方块,表示选中了图表。} 3. 这时单击鼠标右键,在弹出的菜单中选择“图表类型”命令(也可以选择菜单“图表→图表类型”命令),打开“图表类型”对话框。在这里选择需要的图表类型和子类型,单击“确定”按钮完成修改(图1)。 从这个操作中可以看到,当图表创建完成后,需要修改它的图表类型是相当方便的。 二、在一个图表中使用两种图表类型 有时候,为了更好地表达自己的观点,可能需要在一个图表中使用两种或者以上的图表类型。在这种情况下,需要理解:使用不同的图表类型是针对不同的数据系列而言的。因此在具体操作时,要注意选择恰当数据系列进行图表类型的修改。下面通过实际例子中,我们希望把“实际销售量”数据系列的图表类型修改为“折线图”。

1. 进入“组合使用图表类型”工作表,可以看到一个已经创建完成的图表,两个数据系列都使用的是柱形图表类型(图2)。 2. 为了修改系列“实际销售量”的图表类型,下面我们要先选中系列“实际销售量”。用鼠标单击任何一个代表实际销售量的棕色柱形图,可以看到四个棕色柱形图中间都出现了一个绿色小方块(图3),同时可以在编辑窗口左上方的名称框中看到“系列…实际…?”(图4),表明系列“实际销售量”已经被选中。

ExcelVBA_批量自动制图表实例集锦

1, 自动生成图表 -1058346-1-1.html 统计报告0925a.xls ‘2013-9-25 Sub lqxs() Dim Arr, ks, js, nm1$, nm2$, dz1$, dz2$ Dim dz$, dz3$, yy$, nm$ Application.ScreenUpdating = False Sheet3.Activate Arr = [a1].CurrentRegion ks = 3: js = UBound(Arr) - 1 nm = https://www.360docs.net/doc/767446877.html, yy = Left(nm, Len(nm) - 3) nm1 = " 图表6" nm2 = " 图表4" dz = "A2:B" & js & ",D2:E" & js ActiveSheet.ChartObjects(nm1).Activate With ActiveChart .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:=xlColumns .SeriesCollection(1).Select dz1 = "R3C2:R" & js & "C2" .SeriesCollection(1).Values = "='" & nm & "'!" & dz1 dz2 = "R3C4:R" & js & "C4" .SeriesCollection(2).Values = "='" & nm & "'!" & dz2 dz3 = "R3C5:R" & js & "C5" .SeriesCollection(3).Values = "='" & nm & "'!" & dz3 .ChartTitle.Select = yy & " 月份合格率" End With ActiveSheet.ChartObjects(nm2).Activate With ActiveChart .ChartArea.Select dz = "H2:T2,H" & js + 1 & ":T" & js + 1 .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:= xlRows dz2 = "R" & js + 1 & "C8:R" & js + 1 & "C20" .SeriesCollection(1).Values = "='" & nm & "'!" & dz2 .ChartTitle.Select = yy & " 月份不良趋势统计End With Range("A" & ks).Select

EXCEL图表制作的简单方法

数据图表化是将枯燥的数字直观化的一个工具,使用excel的图标制作功能可以轻松的将诸如多个样例对比、发展趋势、所占比例直接用图表的形式直观的展现出来,让大家一看就知道藏在数字背后的秘密,因此,图表化数据也是数据挖掘的一部分,下面我们介绍excel 图表制作的简单方法。 首先你要准备基础数据,然后选择这些数据,点击插入菜单,点击图标,就出现图表向导,共有四步,按照每个步骤的提示,做好选择,即可轻松完成excel图标制作,下面我们图示解答,让你看到其实数字图表化也很简单。 上图即是选中了需要制作图表的数据区域,点击插入图标后的提示。此步中,你需要选择想要生成哪一类图表,每一类图标有各自擅长的优势。同时,选择了大类之后还需要在右侧的子类里选择合适的表现形式,选择完大类和子类后就可以点击下一步了。下方简单说一下常见的图表类别主要功能和用途。 柱形图适合于多个考察对象的多个数据对比,例如上图的例子,多个同行业的季度数据对比,或多个子公司的季度或月度数据对比; 条形图和柱形图是一样的,不过是将柱放倒看,也是适合多个对象的多个数据对比; 折线图主要用于表现一个或多个考察对象的变化趋势,如股票,产值预期估算等; 饼图主要用于在某一点上不同考察对象所占比例的对比,如调查问卷的选项比例,子公司在某一月对总公司的贡献比例等; xy散点图比较像折线图,只是少了线; 上图是步骤二:选择是按数据行还是列生成图表,你可以选择行,也可以选择列,然后看上面的预览效果,看哪一个比较适合你的表达意图,选择好之后点击下一步; 上图是步骤三:此步骤是给图标加标题和行列坐标(部分图标样式只有标题,如饼图),输入完毕后便会在右侧的预览区域展示效果; 上图是步骤四:制作的excel图标是放在本表内还是其它表,你可以选择作为其中的对象插入后面的sheet,默认是放在本表内; 上图即是使用簇状柱形图设置的季度对比图表 相信通过以上的步骤,你基本知道了excel制作表格的步骤,你需要做的就是自己尝试

Excel VBA编程 常用图表对象方法

Excel VBA编程常用图表对象方法 使用图表对象方法,可以为图表上的坐标轴添加标题;以及可以通过使用方法来设置图表对象的格式。本节主要介绍一些常用的图表对象方法的使用。 1.Axes方法 Axes方法返回表示图表上单个坐标轴或坐标轴集合的某个对象,其语法为:expression.Axes (Type, AxisGroup) 其中,在该方法中包含以下几个参数,其功能如下: ●expression 该表达式返回“应用于”列表中的一个对象。 ●Type 指定返回的坐标轴和公式的引用样式。 ●AxisGroup 指定公式的引用样式。 例如,使用以下代码为分类轴添加坐标轴标签。 With Charts(1).Axes(xlCategory) .HasTitle = True .AxisTitle.Text = "姓名" End With 2.ChartWizard方法 ChartWizard方法可以修改给定图表的属性,可以使用本方法快速设置图表的格式,而不必逐个设置所有属性。 语法:表达式.ChartWizard(Source, Gallery, Format, PlotBy, CategoryLabels, SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle) 在该方法中,主要包含以下几个参数,其功能如表17-2所示。 表17-2 ChartWizard方法中参数功能 提示上述表格中的参数均为可选参数。但是,如果省略参数Source,并且选定内容不是活动工作表中的嵌入图表或者活动工作表中不包含图表,则该方法失效并产生错误。 例如,重新设置Chart1的格式,将其改为折线图,添加图例,并添加分类轴标题和数值轴标题,其代码如下: Charts("Chart1").ChartWizard _ Gallery:=xlLine, _

excel表格利用series函数输入新数据时图表自动更新

Excel技巧:输入新数据时图表自动更新2006-03-21 14:21来源:天极软件作者:李东博原创责任编辑:still·yesky评论(2) 我有一朋友,是做销售的。他利用Excel图表来记录每天的销售成绩。那天,他打来电话问了这样一个问题:用Excel来记录每天的销售非常的方便,能够直观地表示出每天的销售成绩,但是因为每天都有新的数据,所以我不得不每天手动更改图表来使其包含新的数据。有没有一种方法可以让我输入新的数据时,图表能自动更新。下面的方法将为他来解决这个问题。 在Excel 97及以后版本中,当选中一个图表数据系列时,工作表中与该数据系列对应的数据区域周围就会出现边框,这时可以通过简单地拖拽区域边框的角点来扩展数据区域。本文采用的方法是用公式来定义一个动态的数据范围以创建图表,从而实现在输入数据时图表能够自动更新,而不必手动更改数据区域的范围。 具体操作步骤如下: 1.输入数据并创建图表,如图1所示(下载练习用Excel工作簿)。 图1 2.选择菜单命令“插入>名称>定义”,打开“定义名称”对话框。在“在当前工作薄中的名称”下方输入框中输入“日期”,在“引用位置”下方输入框中输入公式 “=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1! $A:$A)-1)”,单击“添加”按钮来添加日期,如图2所示。

图2 注意:OFFSET函数中引用的是第一个数据点(单元格A2)并且用COUNTA函数来取得A列数据点的个数。因为A列中包含一个非数值数据“日期”,所以在公式中减去1。 3.在“定义名称”对话框继续定义名称。在“在当前工作薄中的名称”下方输入框中输入“销售”,在“引用位置”下方输入框中输入公式 “=OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B:$B)-1)”,单击“添加”按钮,如图3所示。然后单击“确定”按钮关闭对话框。 图3 4.激活图表并选中数据系列,可以看到在编辑栏中的未更改公式是这样的: =SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$10,Sheet1!$B$2:$B$10,1),下面这一步很关键,我们要做一个替代,现将公式更改如下:=SERIES(,Sheet1!日期,Sheet1!销售,1),如图4所示。在更改后的公式中可以看到我们在第二步和第三步中定义的名称:日期和销售。 图4 做完以上工作,朋友的问题便得到了解决。当我们输入新数据时,图表会自动更新,赶紧试一下吧。如图5所示,加上了2月10日的销售,图表就自动更新了。最后需要注意的

Excel VBA编程 常用图表对象属性

Excel VBA 编程 常用图表对象属性 用户可以使用图表的属性功能,为图表添加标题;以及使用图表对象属性功能来更改图例的颜色。另外,还可以设置不同的属性值,来完成图例的设置,如更改图例的位置。 1.ChartTitle 属性 ChartTitle 对象代表图表标题。使用ChartTitle 属性可返回ChartTitle 对象。其中,只有图表的HasTitle 属性为True 时,ChartTitle 对象才存在,从而才能使用该对象。 下例向工作表Sheet1上嵌入的第一个图表添加标题。 With Worksheets("sheet1").ChartObjects(1).Chart .HasTitle = True .ChartTitle.Text = "学习成绩表" End With 提 示 Chart.HasTitle 属性表示如果坐标轴或图表是否有可见标题,若有则为True 。 语法:表达式.HasTitle 其中,表达式为一个代表Chart 对象的变量。 提 示 常用的图表对象属性还包括ChartType 属性,该属性在介绍“使用VBA 创建图表” 章节中已经作过介绍,这里不再进行讲解。 2.Haslegend 属性 HasLegend 属性表示如果图表有图例,则该属性值为True 。例如,打开图表的图例,并将图例字体颜色设置为蓝色的代码如下: With Worksheets("sheet1").ChartObjects(1).Chart .HasLegend = True .Legend.Font.ColorIndex = 5 在上面的代码中,为字体赋值的属性为ColorIndex 。它可以返回或设置边框、字体或内部填充区域的颜色,语法为:expression.ColorIndex 。其中,expression 为Border 时,表示边框的颜色;为Font 时表示字体颜色;为Interior 时,表示内部填充的颜色。 提 示 其中,ColorIndex 属性指定某颜色在调色板中的颜色编号,值为1时,表示黑色; 为2时,表示白色;为3时,表示红色;为5时表示蓝色;为6时表示黄色;为 10时,表示绿色。 3.Legend 属性 Legend 属性表示图表中的图例,它的属性主要有以下几部分,其功能如下表17-1所示。

用VBA实现工资表的生成

用VBA实现工资表的生成 【摘要】打印工资条是会计日常工作之一,但很多会计工作人员因为excel水平有限,只能用最传统的方式实现工资表的操作,反复复制表头并粘贴于每条记录上方,费时费力,效率不高。vba 程序中的循环语句可以生成宏,利用宏方法来实现工资表的生成可以提高效率,尤其是多条记录的工资表,效果更为明显。 【关键词】工资表;vba;宏 工资条是员工所在单位定期给员工反映工资的纸条,将工资的各项明细表发给员工。一个简单的工资表,通常包括九个管理项目:工号、职工姓名、基本工资、职务工资、福利费、住房基金、应发工资、个人所得税和实发工资。将一个工资表裁分成多个工资条也是会计工作的一部分。通过excel的录入和计算等操作,可生成相应的具体的个人数据信息。但是,在分发工资条过程中,需要每个员工的每个数据都有相应的表头标识,否则员工弄不清楚各个具体数字的含义。用传统方法操作可以实现:(1)将表头复制;(2)在员工记录上一行插入一个空行;(3)粘贴表头。用此种方法虽然操作简单,但是对多员工信息的工作表操作,工作量太大,不是理想方法。可以用vba宏的方式实现。 vba 的全称是visual basic for applications,是一种visual basic的语言,主要能用来扩展windows的应用程式功能,特别是microsoft office软件。也可说是一种应用程式视觉化的basic

script。所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务。excel自动集成了“vba”高级程序语言,用此语言编制出的程序就叫“宏”。在本题目中,可以编写一个宏来实现表头的重复安插在每个员工记录的上一行,实现每个员工的工资表都有表头。 (1)录制宏。录制名称为“生成工作表”的宏:1)在第2名员工记录前插入三个空行;2)复制3-5行(表头);3)粘贴至新插入的空行。至此得到第2名员工记录表头。同样的操作得到第3名员工记录表头。同时得到相应宏代码。 (2)修改宏。通过对生成代码的观察,发现以下规律:1)任何两次操作生成的代步大部分相似,只有选定某行代码中个别参数不同,而且参数有规律,可以通过循环实现。2)对每次操作中的插入3个空行(粘贴表头用)的代码完全一样,也可以通过循环操作实现。解决以上问题,即解决所有问题。选择行参数与循环变量之间存在这样的关系:行数=循环变量*4+3。 (3)执行宏。根据员工编号的数量决定循环变量的值,运行后得到具体员工的工资条(每条记录上方均有3行表头标识对应项名称)。[科] 【参考文献】 [1]杜茂康.excell在数据管理与分析中的应用[m].清华大学出版社,2008.

相关文档
最新文档