巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx

上传人:b****5 文档编号:18524193 上传时间:2022-12-19 格式:DOCX 页数:11 大小:254.24KB
下载 相关 举报
巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx_第1页
第1页 / 共11页
巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx_第2页
第2页 / 共11页
巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx_第3页
第3页 / 共11页
巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx_第4页
第4页 / 共11页
巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx

《巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx》由会员分享,可在线阅读,更多相关《巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx(11页珍藏版)》请在冰豆网上搜索。

巧用VBA编程实现EXCEL电子表格的批量自动打印Word格式.docx

由于Office2010在默认情况下不显示“开发工具”选项卡,因此必须使用以下过程启用该选项卡:

1)、在“文件”选项卡上,选择“选项”打开“Excel选项”对话框。

2)、单击该对话框左侧的“自定义功能区”。

3)、在该对话框左侧的“从下列位置选择命令”下,选择“常用命令”。

4)、在该对话框右侧的“自定义功能区”下,选择“主选项卡”,然后选中“开发工具”复选框。

5)、单击“确定”。

在Excel显示“开发工具”选项卡之后,注意选项卡上“VisualBasic”、“宏”和“宏安全性”按钮的位置。

图1.Excel2010中的“开发工具”选项卡

启用“开发工具”选项卡后,可以轻松找到“VisualBasic”和“宏”按钮。

2、安全问题

单击“宏安全性”按钮可以指定哪些宏可以运行并需满足哪些条件。

尽管未授权宏代码可能会严重损害计算机,但阻止您运行有帮助的宏的安全条件会严重妨碍您的工作效率。

宏安全性是一个复杂而又涉及广泛的话题,您应研究并了解是否应使用Excel宏。

在本文中,请注意,如果当您打开一个包含宏的工作簿时,在功能区和工作表之间出现“安全警告:

宏已被禁用”条,则可单击“启用内容”按钮来启用宏。

此外,作为一种安全措施,您不能以默认的Excel文件格式(.xlsx)保存宏;

而必须将宏保存在具有一个特殊扩展名.xlsm的文件中。

三、用VBA制作证件批量打印的实例

下面通过制作一张学员培训券来说明VBA在Excel中如何实现自动批量打印多张含有照片的培训券。

1、准备工作

1)、设计建立基本人员信息表

在Excel表格中建立如下图2基本信息资料,具体建立过程在这里不再详述,

我建立的表比较多,实际这里要用到的表格只有两张,所以其他的表格我就没有必要说了。

图2学员基本信息表(学员花名册(计算机操作员)

2)、设计建立打印证件或报表格式见图3

图3培训券格式及内容

2、使用VBA编程实现两个工作表链接打印操作

1)、两张表格设置完成后,回到培训券(计算机操作员)工作表即sheet7,点击开发工具标签栏——>

Visualbasic

(或按ALT+F11快捷键),双击你所要打印证件的工作项目,即可进入VBA编程状态输入代码。

如图4所示

图4代码窗口

全部代码如下:

'

功能:

把光标处的人员信息填充到"

培训券(计算机操作员)"

工作表,并培训券(计算机操作员)

用法:

1.把光标定位到需要培训券(计算机操作员)的人员行的单元格

2.执行本宏。

SubsubSetPringInfo()

OnErrorResumeNext

DimoCell1,oCell2,'

定义二变量

Dimcfz2,cfz3,cfz4,cfz5,cfz6,cfz7,cfz8,cfz9

Dimcfz10,cfz11,cfz12,cfz13,cfz14,cfz15,cfz16,cfz17,cfz18

定义身份证取第二位数的内存变量为cfz2,'

取第三位数的内存变量为cfz3,……以此类推到第十八位身份证内存变量为cfz18.(身份证取第一位的内存变量为oCell2,不需要重新定义)

DimFileTypeAsString

DimiPXJHAsLong'

编号

DimiRowAsLong'

正在培训券(计算机操作员)人员的行号

DimstrSheetAsString'

人员信息的工作表名称

strSheet="

学员花名册(计算机操作员)"

人员基本信息在学员花名册(计算机操作员)工作表中,此处可以修改

'

检查是否在人员基本信息工作表中执行此功能,如果是,则显示不能在此工作表中执行。

IfActiveSheet.Name<

>

strSheetThen

不是在人员信息工作表中则弹出对话框。

MsgBox"

请在人员基本信息工作表中执行此功能"

ExitSub

EndIf

Do'

循环开始

iRow=Selection.Row'

行号,从当前选定的行开始培训券(计算机操作员)

读当前培训券(计算机操作员)行的左边第一单元格内容:

序号

SetoCell1=Worksheets(strSheet).Cells(iRow,11)

序号是数字的行需要培训券(计算机操作员)即所对应培训券号行所在的单元格

iPXJH=Val(oCell1.Value)'

培训券号

IfiPXJH>

=10070893Then

在培训券号内的数字

SetoCell2=Worksheets("

).Cells(5,8)

oCell2.Value=iPXJH

姓名

SetoCell1=Worksheets(strSheet).Cells(iRow,2)

).Cells(6,8)

oCell2.Value=oCell1.Value

插入图片

FileType=InputBox("

输入你的图片的后缀名"

"

输入图片格式"

jpg"

Numb=oCell2.Value

Sheet7.Select'

改变当前的工作表为sheet7即培训券(计算机操作员)

WithActiveSheet

.Pictures.Insert("

D:

\pic\"

&

Numb&

"

."

FileType).Select

'

图片所在的路径为:

\pic\,此路径可以根据具体情况更改

SetTarget=Worksheets("

).Cells(5,23)

将图片插入到指定的单元格中,我设置的单元格为W5单元格,可以更

改为自己所需的单元格位置

EndWith

WithSelection

.Top=Cells(5,23).Top+4'

插入图片的上方位置为W5的位置向下4

个单位,数字4可以更改

.Left=Cells(5,23).Left+5'

插入图片的上方位置为W5的位置向下

4个单位,数字4可以更改

.Width=Cells(5,23).Width+110'

插入图片的宽度为W5单元格的宽

度加110个单位的宽度为图片的整个宽度,110可以更改

.Height=Cells(5,23).Height+110'

插入图片的高度为W5单元格的高

度加110个单位的高度为图片的整个高度,110可以更改

户籍

SetoCell1=Worksheets(strSheet).Cells(iRow,9)

).Cells(7,6)

身份证号

SetoCell1=Worksheets(strSheet).Cells(iRow,8)

).Cells(9,3)

指定身份证第一位数字所在的位置,以下类推。

Setcfz2=Worksheets("

).Cells(9,4)

Setcfz3=Worksheets("

).Cells(9,5)

Setcfz4=Worksheets("

).Cells(9,6)

Setcfz5=Worksheets("

).Cells(9,7)

Setcfz6=Worksheets("

).Cells(9,8)

Setcfz7=Worksheets("

).Cells(9,9)

Setcfz8=Worksheets("

).Cells(9,10)

Setcfz9=Worksheets("

).Cells(9,11)

Setcfz10=Worksheets("

).Cells(9,12)

Setcfz11=Worksheets("

).Cells(9,13)

Setcfz12=Worksheets("

).Cells(9,14)

Setcfz13=Worksheets("

).Cells(9,15)

Setcfz14=Worksheets("

).Cells(9,16)

Setcfz15=Worksheets("

).Cells(9,17)

Setcfz16=Worksheets("

).Cells(9,18)

Setcfz17=Worksheets("

).Cells(9,19)

Setcfz18=Worksheets("

).Cells(9,20)

oCell2.Value=Mid((oCell1.Value),1,1)

给身份证第一位数字赋具体的值,以此类推。

cfz2.Value=Mid((oCell1.Value),2,1)

cfz3.Value=Mid((oCell1.Value),3,1)

cfz4.Value=Mid((oCell1.Value),4,1)

cfz5.Value=Mid((oCell1.Value),5,1)

cfz6.Value=Mid((oCell1.Value),6,1)

cfz7.Value=Mid((oCell1.Value),7,1)

cfz8.Value=Mid((oCell1.Value),8,1)

cfz9.Value=Mid((oCell1.Value),9,1)

cfz10.Value=Mid((oCell1.Value),10,1)

cfz11.Value=Mid((oCell1.Value),11,1)

cfz12.Value=Mid((oCell1.Value),12,1)

cfz13.Value=Mid((oCell1.Value),13,1)

cfz14.Value=Mid((oCell1.Value),14,1)

cfz15.Value=Mid((oCell1.Value),15,1)

cfz16.Value=Mid((oCell1.Value),16,1)

cfz17.Value=Mid((oCell1.Value),17,1)

cfz18.Value=Mid((oCell1.Value),18,1)

工种

SetoCell1=Worksheets(strSheet).Cells(iRow,7)

).Cells(11,11)

'

培训券(计算机操作员)证件,"

A1:

E7"

为定义页面的培训券(计算机操作员)范围

Worksheets("

).Range("

AF25"

).PrintOut

清空sheet7中相片单元格中的照片为了避免照片打印重复

DimxAsInteger

Forx=1ToSheet7.Shapes.Count

IfSheet7.Shapes(x).TopLeftCell.Address="

$W$5"

Then

绝对引用单元格W5是我设置的相片所在的单元格

Sheet7.Shapes(x).Delete'

删除图片单元格的内容

Nextx

Sheet1.Activate'

激活当前的工作表为sheet1即学员花名册(计算机操作员)

打完一个证件后,询问是否培训券(计算机操作员)下一个。

IfMsgBox("

继续打印下一人员?

"

vbDefaultButton1+vbYesNo)<

vbYesThen

中断培训券(计算机操作员)打印

为培训券(计算机操作员)下一人员做准备

SetoCell1=Worksheets(strSheet).Cells(iRow+1,1)

oCell1.Activate

Sheet1.Select'

恢复当前的工作表为sheet1即学员花名册(计算机操作员)

Else

当前行不是人员信息,不能打印"

Loop

EndSub

2)、实验结果

完成后按ALT+F11进入代码窗口,鼠标点击

(或按F5)执行宏操作会弹出宏对话框,如图5所示

点击“运行”按钮。

注意:

在运行前要选择工作表学员花名册(计算机操作员)即sheet1,并且选择A4单元格即序号为1的单元格,不然会出现提示:

“请在人员基本信息工作表中执行此功能”,还要注意的是:

在“培训券(计算机操作员)”工作表中,显示比例改必须为100%,否则,打印出来的图片不会在图片框中。

这样我们可以按照要求打印自己所要打印的证件了。

手工几天的工作不到半天就完成了,提高了工作效率,同时也减少了很多的错误。

此代码在WindowsXP操作系统、MicrosoftOfficeExcel2010下编写,并顺利运行通过。

四、结束语

在Excel制作电子表格过程中,充分利用VBA这一工具,提升Excel文件的技术含量,可使电子表格自动化功能得到增强,使电子表格更完善,更具有灵活多样性。

执行打印后的效果为下图6所示

图6执行代码后打印的效果图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1