excel,怎么通过宏把工资表生成打印条

第一步:把这个工资表复制到一个新的工作薄中(光复制有人员名字的那些,表头不复制),然后在新的工作薄的头一列前新加一列,头三行分别输入2,5,8,然后选中这三行,用数据填充柄往下拉至全部人员,这样就在每个人的前边都加了数字。

第二步:在最后的人员名字下行的第二列把原表头复制进去(也就是说前边要空一个格,目的是添数字),有多少人,就复制多少行,或者用填充柄来实现也可。(比如50人就要有50行表头),在这些表头的第一行前边添数字1,第二行表头前边添数字4,第三行表头前边添数字7,然后用数据填充柄来实现其他行的填充。

第三步:在最后一行表头的下行第一列处添数字3,再下一行添6,再下一行添9,然后用数据填充柄实现以后行的填充(空行数量必须和人员数量一致)。 第四步:选中整个表格,用“数据”中的“排序”对A列进行排序,这样就完成了整个工资表的制作。

第五步:把整个表格复制到WORD当中(因为用excel做的表格空行有框,无法消除)然后把表格加以调整,把空行的竖行都消除了(这个工作挺烦琐,你可以按住ctrl键用鼠标把全部空行都选中然后进行操作)。

最后再给这个工资表加上题目,至此工资表的工作基本完成。

实现你要求的打印格式程序如下,是根据你的实际表的情况,用宏编写的:

Sub Print_table()

Sheets("sheet2").Select

'5 是工资表上打印的人数减1,可更改

For i = 1 To 5

'每个工人工资条下方插入两行,20是工资表的列数,可根据情况更改,下面三行中的的20要同时修改。 Range(Cells(3 * i + 1, 1), Cells(3 * i + 2, 20)).Select

Selection.Insert Shift:=xlDown

'复制表头

Range(Cells(1, 1), Cells(2, 20)).Select

Selection.Copy

Cells(3 * i + 1, 1).Select

ActiveSheet.Paste

ActiveCell.Rows("1:1").EntireRow.RowHeight = 42

Next

Range("a2").Select

End Sub

请注意以下几点:

1、Excel启动时,提示是否使用宏,点击“启用宏”。

2、此程序认为工资表页面的名称是“sheet2”,如果你的工资表是别的名称,比如说,“一车间”,则把程序第二行中的sheet2替换掉,写成

sheets("一车间").select

3、程序装载方法:在页面上点击“工具”-〉宏 -〉Visual Basic编辑器

在空白的方框里,将上面的程序复制上去,点击编辑器工具栏里的小箭头即可运行程序了。如果光标不在程序中,点击小箭头时,会弹出一个窗口,此时选中宏的名称,点击“运行”即可。

4、程序行前面有'的是注释行,'是英文字符中的单引号。

5、原来的工资表的格式应该是只有最上面一个表头,下面每一行是一位工人的工资条。

6、此程序在winXP下调试通过,建议你先用一页表调试一下。

下面的附件你下载后就可以直接使用了。

如果要打印“1月”的表,循环数i=5应改为i=74,因为表上的人数是75。

使用方法:

进入sheet2页面,点击:工具-〉宏 -〉执行,所需要的格式就出来了。

在Excel中新建一个文件,将其命名为“工资表与工资条”,在工作表“sheet1”中输入并编辑好本单位职工工资总表(如表1所示)后,点击“工具”菜单→“宏”→“宏„”→输入宏名“生成工资条”→创建,输入如下的宏的各行文本,输入完成后保存该宏。将工作表“sheet1”复制为另一个工作表“sheet2”中,使“sheet2”成为当前工作表,执行刚才创

建的宏,即可很快将表1所示的工资表转换为表2所示的工资条。

宏的内容如下:

Sub 生成工资条()

Cells.Select

'选择整个表去掉表格线

Range("F1").Activate

Selection.Borders(xlDiagonalDown).Line

Style = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

Selection.Borders(xlEdgeLeft).LineStyle = xlNone

Selection.Borders(xlEdgeTop).LineStyle = xlNone

Selection.Borders(xlEdgeBottom).LineStyle = xlNone

Selection.Borders(xlEdgeRight).LineStyle = xlNone

Selection.Borders(xlInsideVertical).LineStyle = xlNone

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Rows("2:2").Select

'选择第2行

Selection.Insert Shift:=xlDown

'在第2行前插入一行,保持第2行

为选中状态

num=1

50

'总人数×3,如工资表中有100人则

为100×3即num=300

col=14

'工资表的栏数,如工资表有17栏则

'col=17

num1 = 4

Do While num1

'循环插入空行

Range(Cells(num1, 1), Cells(num1, col)).Select

'选中第num1行的第1列到第col列

Selection.Insert Shift:=xlDown

Selection.Insert Shift:=xlDown

num1 = num1 + 3

Loop

Range(Cells(1, 1), Cells(1, col)).Select

Application.CutCopyMode = False

'剪切复制模式无效

Selection.Copy

'复制选择区域

Range("A2").Select

'选择A2单元格

ActiveSheet.Paste

'从A2单元格起粘贴内容

num2 = 5

Do While num2

'循环插入标题行

Range(Cells(

1, 1), Cells(1, col)).Select

Application.CutCopyMode = False

Selection.Copy

Cells(num2, 1).Select

ActiveSheet.Paste

num2 = num2 + 3

Loop

Range(Cells(2, 1), Cells(3, col)).Select

Application.CutCopyMode = False

Selection.Borders(xlDiagonalDown).LineStyle

= xlNone

'定义表格边框线、内线样式

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlDash

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlDash

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

Selection.Copy

Range(Cells(5, 1), Cells(6, col)).Select

Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False

'接上行删除上行尾的连字符

_,复制表格线样式

num3 = 8

Do While num3 <= num

'循环复制表格线样式

Range(Cells(num3, 1), Cells(num3 + 1,

col))

.Select

Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False

num3 = num3 + 3

Loop

Rows("1:1").Select

'删除多余的一行

Selection.Delete

End Sub

以后每月要打印工资表与工资条时,只需将“工资表与工资条”文件打开,修改好工作表“sheet1”中的当月的工资总表数据后将其复制为工作表“sheet2”,并使“sheet2”成为当前工作表,执行宏“生成工资条”即可。

现在许多单位都实现了工资代储,但每月的工资清单(工资条)还得要发给职工。如果用Excel程序处理的工资表,打印后每页只有一个表头,剪裁成条后除了每页的第一名职工外,其余的就没有表头了,这样将使职工无法清楚工资条的数字对应什么具体名目。怎样才能给每个职工的工资条加上工资表表头呢?这里笔者将解决方案介绍给大家。

首先根据每个职工工资具有唯一电脑序号的特点,使用VBA里的判断语句,让循环从第一个电脑序号开始,如果Excel表中相邻两行的电脑序号不同,就在这两行之间插入一个空白行,然后使用循环语句,把表头的内容依次复制粘贴到每个空白行。

下面是具体的操作步骤:

1.在Excel中打开需要制作工资条的工资表文件。

2.打开“工具”/“宏”(如果在菜单中没有看见“宏”,让鼠标在菜单上稍停留或者按向下的双箭头就会出现),选择“Visual

Basic编辑器”(图1)打开VBA编辑器窗口,在VBAProject的工程资源管理器中双击Sheet1,会出现代码编辑窗口,在代码编辑窗口输入如下代码(图2):

Sub gongzitiao()

Application.ScreenUpdating = False

'为避免破坏表一,将表一内容完整复制到表二

Sheets(1).[A1].CurrentRegion.Copy Sheets(2).[A1]

'定义循环变量的最大值不小于表二中职工数的二倍(我校职工总数为2564)

a = (Application.WorksheetFunction.CountA(Sheets(2).[a1:a2600] * 2

'如果第一列(职工的工资电脑序号)上下单元格的值不相等,则在它们之间插入一个空白行

For i = 3 To a

If Sheets(2).Cells(i,1)Sheets(2).Cells(i + 1,1) And (Sheets(2).Cells(i,

1) "") Then

Sheets(2).Rows(i + 1).Insert

End If

'如果第一列中的单元格为空,则将表中[A2:M2](工资清单表头项目)复制到此行 If Sheets(2).Cells(i,1) = "" Then

Sheets(2).[A2:M2].Copy Sheets(2).Cells(i,1)

End If

Next

Application.ScreenUpdating = True

End Sub

3.检查源代码编辑无误后,在VBA窗口中打开菜单“运行”/“运行宏”,将弹出“宏”窗口,你只需单击“运行”即可。

4.待宏运行完毕,再回到Excel,单击工资表下方的“Sheet2”,于是在每两个相邻职工间就插入了工资清单项目(图3),再用打印机打印并裁条后,就可以发放给每位职工了。 该操作在Excel 2000下调试通过。

第一步:把这个工资表复制到一个新的工作薄中(光复制有人员名字的那些,表头不复制),然后在新的工作薄的头一列前新加一列,头三行分别输入2,5,8,然后选中这三行,用数据填充柄往下拉至全部人员,这样就在每个人的前边都加了数字。

第二步:在最后的人员名字下行的第二列把原表头复制进去(也就是说前边要空一个格,目的是添数字),有多少人,就复制多少行,或者用填充柄来实现也可。(比如50人就要有50行表头),在这些表头的第一行前边添数字1,第二行表头前边添数字4,第三行表头前边添数字7,然后用数据填充柄来实现其他行的填充。

第三步:在最后一行表头的下行第一列处添数字3,再下一行添6,再下一行添9,然后用数据填充柄实现以后行的填充(空行数量必须和人员数量一致)。 第四步:选中整个表格,用“数据”中的“排序”对A列进行排序,这样就完成了整个工资表的制作。

第五步:把整个表格复制到WORD当中(因为用excel做的表格空行有框,无法消除)然后把表格加以调整,把空行的竖行都消除了(这个工作挺烦琐,你可以按住ctrl键用鼠标把全部空行都选中然后进行操作)。

最后再给这个工资表加上题目,至此工资表的工作基本完成。

实现你要求的打印格式程序如下,是根据你的实际表的情况,用宏编写的:

Sub Print_table()

Sheets("sheet2").Select

'5 是工资表上打印的人数减1,可更改

For i = 1 To 5

'每个工人工资条下方插入两行,20是工资表的列数,可根据情况更改,下面三行中的的20要同时修改。 Range(Cells(3 * i + 1, 1), Cells(3 * i + 2, 20)).Select

Selection.Insert Shift:=xlDown

'复制表头

Range(Cells(1, 1), Cells(2, 20)).Select

Selection.Copy

Cells(3 * i + 1, 1).Select

ActiveSheet.Paste

ActiveCell.Rows("1:1").EntireRow.RowHeight = 42

Next

Range("a2").Select

End Sub

请注意以下几点:

1、Excel启动时,提示是否使用宏,点击“启用宏”。

2、此程序认为工资表页面的名称是“sheet2”,如果你的工资表是别的名称,比如说,“一车间”,则把程序第二行中的sheet2替换掉,写成

sheets("一车间").select

3、程序装载方法:在页面上点击“工具”-〉宏 -〉Visual Basic编辑器

在空白的方框里,将上面的程序复制上去,点击编辑器工具栏里的小箭头即可运行程序了。如果光标不在程序中,点击小箭头时,会弹出一个窗口,此时选中宏的名称,点击“运行”即可。

4、程序行前面有'的是注释行,'是英文字符中的单引号。

5、原来的工资表的格式应该是只有最上面一个表头,下面每一行是一位工人的工资条。

6、此程序在winXP下调试通过,建议你先用一页表调试一下。

下面的附件你下载后就可以直接使用了。

如果要打印“1月”的表,循环数i=5应改为i=74,因为表上的人数是75。

使用方法:

进入sheet2页面,点击:工具-〉宏 -〉执行,所需要的格式就出来了。

在Excel中新建一个文件,将其命名为“工资表与工资条”,在工作表“sheet1”中输入并编辑好本单位职工工资总表(如表1所示)后,点击“工具”菜单→“宏”→“宏„”→输入宏名“生成工资条”→创建,输入如下的宏的各行文本,输入完成后保存该宏。将工作表“sheet1”复制为另一个工作表“sheet2”中,使“sheet2”成为当前工作表,执行刚才创

建的宏,即可很快将表1所示的工资表转换为表2所示的工资条。

宏的内容如下:

Sub 生成工资条()

Cells.Select

'选择整个表去掉表格线

Range("F1").Activate

Selection.Borders(xlDiagonalDown).Line

Style = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

Selection.Borders(xlEdgeLeft).LineStyle = xlNone

Selection.Borders(xlEdgeTop).LineStyle = xlNone

Selection.Borders(xlEdgeBottom).LineStyle = xlNone

Selection.Borders(xlEdgeRight).LineStyle = xlNone

Selection.Borders(xlInsideVertical).LineStyle = xlNone

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Rows("2:2").Select

'选择第2行

Selection.Insert Shift:=xlDown

'在第2行前插入一行,保持第2行

为选中状态

num=1

50

'总人数×3,如工资表中有100人则

为100×3即num=300

col=14

'工资表的栏数,如工资表有17栏则

'col=17

num1 = 4

Do While num1

'循环插入空行

Range(Cells(num1, 1), Cells(num1, col)).Select

'选中第num1行的第1列到第col列

Selection.Insert Shift:=xlDown

Selection.Insert Shift:=xlDown

num1 = num1 + 3

Loop

Range(Cells(1, 1), Cells(1, col)).Select

Application.CutCopyMode = False

'剪切复制模式无效

Selection.Copy

'复制选择区域

Range("A2").Select

'选择A2单元格

ActiveSheet.Paste

'从A2单元格起粘贴内容

num2 = 5

Do While num2

'循环插入标题行

Range(Cells(

1, 1), Cells(1, col)).Select

Application.CutCopyMode = False

Selection.Copy

Cells(num2, 1).Select

ActiveSheet.Paste

num2 = num2 + 3

Loop

Range(Cells(2, 1), Cells(3, col)).Select

Application.CutCopyMode = False

Selection.Borders(xlDiagonalDown).LineStyle

= xlNone

'定义表格边框线、内线样式

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlDash

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlDash

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

Selection.Copy

Range(Cells(5, 1), Cells(6, col)).Select

Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False

'接上行删除上行尾的连字符

_,复制表格线样式

num3 = 8

Do While num3 <= num

'循环复制表格线样式

Range(Cells(num3, 1), Cells(num3 + 1,

col))

.Select

Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False

num3 = num3 + 3

Loop

Rows("1:1").Select

'删除多余的一行

Selection.Delete

End Sub

以后每月要打印工资表与工资条时,只需将“工资表与工资条”文件打开,修改好工作表“sheet1”中的当月的工资总表数据后将其复制为工作表“sheet2”,并使“sheet2”成为当前工作表,执行宏“生成工资条”即可。

现在许多单位都实现了工资代储,但每月的工资清单(工资条)还得要发给职工。如果用Excel程序处理的工资表,打印后每页只有一个表头,剪裁成条后除了每页的第一名职工外,其余的就没有表头了,这样将使职工无法清楚工资条的数字对应什么具体名目。怎样才能给每个职工的工资条加上工资表表头呢?这里笔者将解决方案介绍给大家。

首先根据每个职工工资具有唯一电脑序号的特点,使用VBA里的判断语句,让循环从第一个电脑序号开始,如果Excel表中相邻两行的电脑序号不同,就在这两行之间插入一个空白行,然后使用循环语句,把表头的内容依次复制粘贴到每个空白行。

下面是具体的操作步骤:

1.在Excel中打开需要制作工资条的工资表文件。

2.打开“工具”/“宏”(如果在菜单中没有看见“宏”,让鼠标在菜单上稍停留或者按向下的双箭头就会出现),选择“Visual

Basic编辑器”(图1)打开VBA编辑器窗口,在VBAProject的工程资源管理器中双击Sheet1,会出现代码编辑窗口,在代码编辑窗口输入如下代码(图2):

Sub gongzitiao()

Application.ScreenUpdating = False

'为避免破坏表一,将表一内容完整复制到表二

Sheets(1).[A1].CurrentRegion.Copy Sheets(2).[A1]

'定义循环变量的最大值不小于表二中职工数的二倍(我校职工总数为2564)

a = (Application.WorksheetFunction.CountA(Sheets(2).[a1:a2600] * 2

'如果第一列(职工的工资电脑序号)上下单元格的值不相等,则在它们之间插入一个空白行

For i = 3 To a

If Sheets(2).Cells(i,1)Sheets(2).Cells(i + 1,1) And (Sheets(2).Cells(i,

1) "") Then

Sheets(2).Rows(i + 1).Insert

End If

'如果第一列中的单元格为空,则将表中[A2:M2](工资清单表头项目)复制到此行 If Sheets(2).Cells(i,1) = "" Then

Sheets(2).[A2:M2].Copy Sheets(2).Cells(i,1)

End If

Next

Application.ScreenUpdating = True

End Sub

3.检查源代码编辑无误后,在VBA窗口中打开菜单“运行”/“运行宏”,将弹出“宏”窗口,你只需单击“运行”即可。

4.待宏运行完毕,再回到Excel,单击工资表下方的“Sheet2”,于是在每两个相邻职工间就插入了工资清单项目(图3),再用打印机打印并裁条后,就可以发放给每位职工了。 该操作在Excel 2000下调试通过。


相关内容

  • 模具企业生产管理系统
  • 公司首页 公司概况 软件下载定制开发进入社区 返回主目返回主目录录 系统介绍 <模具企业业务生产管理系统>是为各类大中小型模具企业的业务.生产开发的一套管理系统.系统界面简洁,菜单功能一目了然.其中包含了基本信息.采购管理.销售管理.生产管理.库存查询.工资管理.账务管理.综合查询八大功 ...

  • 怎么做好一个高质量的excel
  • Excel 表格的35招必学秘技 转载 分享该日志 评论 举报 转载自 俊峰 转载于今天 12:43 | 分类:天下杂侃 阅读:(1) 评论:(0) Excel 表格的35招必学秘技 也许你已经在Excel 中完成过上百张财务报表,也许你已利用Excel 函数实现过上千次的复杂运算,也许你认为Exc ...

  • 办公软件学习1
  • Excel表格的35招必学秘技 也许你已经在Excel中完成过上百张财务报表,也许你已利用Excel函数实现过上千次的复杂运算,也许你认为Excel也不过如此,甚至了无新意.但我们平日里无数次重复的得心应手的使用方法只不过是Excel全部技巧的百分之一.本专题从Excel中的一些鲜为人知的技巧入手, ...

  • 在Delphi编程中利用Excel实现动态报表
  • 0 引言 随着计算机技术的不断普及, 办公的数字化程度越来越高, 出现了大量的计算机系统, 如固定资产管理系统.人事工资管理系统等等.这其中存在大量的MIS系统.MIS系统的一个重要特点是需要处理大量数据并形成报表.由于行业或者其他一些原因, 这些报表的格式种类繁多, 而且还有一些复杂报表.这些报表 ...

  • 会计电算化模拟试题一
  • 会计电算化模拟试题一 一.单项选择题 1.会计核算软件各功能模块是通过( )以记账凭证为接口连接起来的. A.报表生成与汇总模块B.工资核算模块C.账务处理模块D.成本核算模块 答案:C解析:账务处理模块是会计核算软件的核心模块,该模块以记账凭证为接口与其他功能模块有机地连接在一起,构成完整的会计核 ...

  • 别告诉我你会用Excel--券商研究报告模板精髓
  • 别告诉我你会用Excel 据说,80%以上的人看了这个,都相见恨晚,你会么?不管你信不信,反正我是信了. 感觉有用就留个言吧. 也许你已经在Excel中完成过上百张财务报表,也许你已利用Excel函数实现过上千次的复杂运算,也许你认为Excel也不过如此,甚至了无新意.但我们平日里无数次重复的得心应 ...

  • 电脑基本操作知识
  • 一.误删资料恢复 一不小心,删错了,还把回收站清空了,咋办啊? 只要三步,你就能找回你删掉并清空回收站的东西 步骤: 1.单击"开始--运行,然后输入regedit (打开注册表)2.依次展开HEKEY--LOCAL--MACHIME/SOFTWARE/microsoft/WINDOWS/ ...

  • xx镇劳动就业管理信息系统建设方案
  • 劳动就业管理 信息系统建设方案 目 录 1. 项目简介 .......................................................................................................................... ...

  • 金算盘财务软件如何建立工资表并录入数据
  • 金算盘财务软件如何建立工资表并录入数据 建立工资表 如果您需要每月多次发放工资或按项目发放工资,建议用户按次数或项目编制多张工资表,便于录入.修改及发放工资. 1.单击流程图中的"建立工资表"标 ,进入"新增工资表"向导对话框. 输入工资表名称及建立日期: 2 ...