大家知道,在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”。