大家知道,在Word中可以将“奇数页”和“偶数页”分开打印,从而实现多页文档的“双面打印”效果。但是,在Excel中却没有这一功能。下面,我们就以Excel2007为例,为其添加一个具有“双面打印”功能的按钮。
一、展开“开发工具”选项卡
要在Excel中实现“双面打印”,就要用到其内嵌的VBA功能,因此,需要先展开“开发工具”选项卡。
启动Excel2007,单击左上角的软件图标,在随后出现的下拉菜单中(如图1),选择“Excel选项”选项,打开“Excel选项”对话框(如图2)。
先在左侧选中“个性化设置”选项,然后在右侧“使用Excel时采用的首选项”下面选中“在功能区显示‘开发工具’选项卡”,确定返回。
二、生成“个人宏工作簿”
为了让“双面打印”按钮对所有工作簿都有效,我们需要将其保存在“个人宏工作簿”中。第一次使用“宏”这个功能时,需要先让软件生成一个隐藏的“个人宏工作簿”。
切换到“开发工具”选项卡中,单击其中的“录制宏”按钮,打开“录制新宏”对话框(如图3)。输入一下宏名称(如“smdy”),按“保存在”右侧的下拉按钮,在随后出现的下拉列表中,选择“个人宏工作簿”选项,确定进入“宏”录制状态。
不需要进行任何操作,直接单击“开发工具”选项卡中的“停止录制”按钮,系统会自动生成一个隐藏的“个人宏工作簿”。
特别提醒:以后需要在“个人宏工作簿”中编辑宏时,就不需要再进入此步操作了。
三、编辑“双面打印”代码
单击“开发工具”选项卡上的“Visual Basic”按钮,进入VBA编辑状态(如图4)。
特别提醒:按“Alt+F11”组合键,即可快速进入VBA编辑状态。
在左侧“工程资源管理器”中,展开“VBAPRoject(PERSONAL.XLSB)”选项(这就是“个人宏工作簿”),双击其中的“模块1”,然后用下述代码替换右侧编辑区中的原有代码:
Sub smdy()
On Error Resume Next
x = ExecuteExcel4Macro("get.document(50)")
For i = 1 To Int(x / 2) + 1
ExecuteExcel4Macro "PRINT(2," & 2 * i - 1 & "," & 2 * i - 1 & ",1,,,,,,,,2,,,TRUE,,FALSE)"
Next i
MsgBox "请将打印纸反向装入打印机中", vbOKOnly, "打印另一面"
For j = 1 To Int(x / 2) + 1
ExecuteExcel4Macro "PRINT(2," & 2 * j & "," & 2 * j & ",1,,,,,,,,2,,,TRUE,,FALSE)"
Next j
End Sub
输入完成后,关闭VBA编辑窗口返回到Excel编辑状态。
四、添加“双面打印”按钮
其实,我们只要运行上面“smdy”宏,就可以实现双面打印效果了。但是,为了操作上的方便,我们在“快速访问工具栏”上添加一个“双面打印”的按钮。
右击左上角的软件图标,在随后出现的下拉菜单中,选择“自定义快速访问工具栏”选项,打开“Excel选项”对话框,并定位到“自定义”选项中(如图5)。
单击“从下拉位置选择命令”右侧的下拉按钮,在随后出现的下拉列表中,选中“宏”选项。将刚才编辑的宏“PERSONAL.XLSB!smdy”“添加”到右侧的快速工具栏中。
单击其中的“修改”按钮,打开“修改按钮”对话框(如图6),选中一个图标,并输入“显示名称”(如“双面打印”),确定返回到“Excel选项”对话框中,再“确定”退出。
特别提醒:不修改“显示名称”项目的内容,并不影响宏的正常运行和结果。
五、实现“双面打印”
打开相应的文档,单击窗口上端“快速访问工具栏”(如图7)上的“双面打印”按钮,系统即刻开始打印“奇数页”,打开完成后,弹出如图8所示的提示框。
将刚才打印出来的文档纸张,依次反向装入打印机中,单击一下图8中的“确定”按钮,即可将“偶数页”打印到纸张的另一面上,实现“双面打印”之目的。
特别提醒:
①编辑了“个人宏工作簿”后,退出Excel时,会弹出一个如图9所示的对话框,请一定要单击其中的“是(Y)”按钮,保存上述宏代码。
②反向装纸时,一定要先测试一下,装纸的顺序和方向,确定正确打印。
③在打印另一面时,如果出现夹纸等意外情况,造成部分页面打印的错误,请手动将错误页面重新打印一下。
④如果在Excel2003及以前版本中使用此宏,只要修改两行代码就行了:将“ExecuteExcel4Macro "PRINT(2," & 2 * i - 1 & "," & 2 * i - 1 & ",1,,,,,,,,2,,,TRUE,,FALSE)"”修改为“ActiveWindow.SelectedSheets.PrintOut From:=2 * i - 1, To:=2 * i - 1, Copies:=1, Collate:=True”,将“ExecuteExcel4Macro "PRINT(2," & 2 * j & "," & 2 * j & ",1,,,,,,,,2,,,TRUE,,FALSE)"”修改为“ActiveWindow.SelectedSheets.PrintOut From:=2 * j, To:=2 * j, Copies:=1, Collate:=True”。