admin 管理员组文章数量: 1086019
2024年5月19日发(作者:小程序制作教程源码)
竭诚为您提供优质文档/双击可除
excel,vba,批量将网页上的表格下载到
excel中
篇一:使用Vba实现excel批量生成图表并发送
使用excelVba实现图表批量生成并发送
业务需求
officeword20xx的邮件合并功能是财务、文秘类工作经
常使用的功能之一,该功能可以生成包含可变内容的批量邮
件文档,广泛适用于发送工资条、成绩单、通知书等,这里
不再赘述。笔者所在单位最近为加强员工考核管理工作力度,
提出了一个类似于邮件合并功能,但使用邮件合并功能却不
能实现的需求,下面用文字结合图表描述:
1.将员工百分制考核结果批量以图表(折线图)反应出
来,每一条员工数据均生成一个类似于下图右侧的图表。
(图1)
2.使用类似于邮件合并方式实现员工考核图表的批量
发送,将生成的图表插入邮件正文分别发送给每位员工。
1 16
(图2)
解决思路
思路一:使用+sqlserver(或access等,下同)
开发一个网站,设置好权限,允许员工查看自己的反馈结果。
思路评价:可行,但达不到设想中的推送效果。
思路二:使用+sqlserver开发一个系统,内置
图表模板,图表基于固定区域数据生成;为每位员工复制一
份作为报表,将该员工数据填写到固定区域;将每位员工的
报表作为附件发送给每位员工。
思路评价:可行,但开发量大,效果不直观。
思路三:使用+sqlserver开发一个系统,使用
Vs20xx版以上自带控件或第三方控件如dotnetcharting,
为每位员工生成一张图片,将该图片插入邮件发送给每位员
工。
思路评价:可行,但开发量大。
思路四:使用excelVba为每位员工生成一张图片,将
该图片插入邮件发送给每位员工。这个思路一开始并没有列
入考虑范围,主要原因是当时认为在excel中为每位员工生
成一个图表是不可能的,即使能生成也没办法脱离excel工
作薄,分别和员工对应起来并发送。最终采用本思路,是缘
于笔者发现Vba可以非常容易地把图表导出为图片。
思路评价:可行,事实证明,开发量比想象的小很多。
2 16
开发环境准备
1.在运行该程序的电脑上安装officeexcel20xx或以上
版本;2.正确配置outlook使之能够正常发送邮件;
3.打开excel20xx新建工作薄,把测试数据输入到
sheet1工作表,把工作薄保存到工作目录(为方便后文描述,
这里的目录设为“e:excel-vba”),在该目录下新建
“imgfile”子目录,以存放图片。示例数据如下:
注意:附件路径是个公式:
=concatenate(“e:excel-vbaimgfile”,a1,”.jpg”)
含义是图片以员工姓名命名,这意味着员工姓名不可重复。
4.完成宏安全设置,如图所示:
(图3)
实现过程
这个业务需求实现包含两个难点,一是为每位员工生成
对应的图片;二是批量发送带图片的邮件。基于这两点,笔
者在excel工作薄中设置了两个按钮,编写了两段代码,分
别对应上述两个问题。事实上,这两段代码完全可以整合到
一起,这里为了方便理解,还是分开介绍。笔者采取代码中
加入注释的方式帮助大家理解代码含义。
第一步,在sheet1中加入两个按钮,分别命名为“批
量生成图表”和“批量发送邮件”。第二步,分别为两个按
钮指定如下宏代码:
3 16
sub批量生成图表()
dimmychart,RaaschartobjectdimmyFilenameasstringdimi
,jasinteger
withsheet1
先虚加一个图表对象,解决下文循环开头删除空集问题
setmychart=.(520,40,400,250)取数据
总行数,第一行为标题,最后一行为平均值
j=sheet1.[b65536].end(xlup).Row从第2行开始循环,i
代表第几行Fori=2toj-1清除原有图
表..指定图表位置和大小
setmychart=.(520,40,400,250)withmyc
第一个数据系列,员工各项考核
值.charttype=i
es
.seriescollection(1).xValues=("b1:e
1").seriescollection(1).Values=("b"第二
个数据序列,各项考核平均值,位于sheet最后一
行.ies
.seriescollection(2).xValues=("b1:e
4 16
1").seriescollection(2).Values=("b".指
定图表生成的位置
.locationwhere:=xllocationasobject,name:="sheet
1"显示标签值
.applydatalabelsshowValue:=true显示图表标
题.hastitle(excel,vba,批量将网页上的表格下载到excel
中)=true
.="员工考核反馈"
.设置图表标题的字体
=ndex=3
.name="华文新魏"endwith
.设置图表区域的颜色
ndex=ncolorin
dex=n=xlsolidendwith
.设置绘图区域的颜色
ndex=ncolorin
dex=n=xlsolidendwith
.设置是否显示y轴刻度
s(xlValue,xlprimary)=truesetmyc
5 16
版权声明:本文标题:excel,vba,批量将网页上的表格下载到excel中 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1716126667a691498.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论