Excel做到批量列印薪水條

  每月月初那幾天時間(發薪水時間)是財務MM最為苦惱的幾天,她們除製作薪水報表外還要製作薪水條(每人一條),由於我公司員工有190多人,按照傳統的復制、黏貼、排列方法她們要進行很長版面的重復操作,如果其中有某個數據要改動,牽涉的版面範圍就很廣,工作量很大。我「自告奮勇」為她們製作了一套薪水條批量列印的模板,解決了她們的苦惱,這種方法也適用與大多數企業,下面向大家介紹。

財務MM給我提供了薪水條格式(圖1),由於薪水條比較窄小,如果用Word的郵件合併功能,按默認設置只能一張紙列印一個薪水條,浪費紙張不說,效率也不高,如果將薪水條復制幾份放在同一A4紙頁面的話對郵件合併的數據源則要進行多縱列排版,數據源有變動需要修改的時候也很不方便,而且薪水條裡含有「金額大寫」項目,用郵件合併功能也比較麻煩,經過綜合考慮和比較,決定用Excel2003來製作帶金額大寫且能滿幅面批量列印的薪水條模板。

Excel做到批量列印薪水條

經詢問得知薪水報表為每月必做,決定採用調用薪水報表數據來做到。通過測量,發現一張A4紙縱向放4個薪水條比較合適。

一、修改薪水報表

為方便數據調用和發放薪水時能「對號入座」,我們在報表前插入兩列,分別命名為「序號」和「薪水條編號」,在A3單元格裡輸入=row()-2,在B3中輸入=row()+2005049998,同時選中A3和B3單元格,往下拖動填充句柄到最後一行以產生能自動調整的序號和薪水條編號。修改後報表格式如圖2所示(其中某些無須用到的數據列已隱藏)。

Excel做到批量列印薪水條

二、製作薪水條列印界面

1.設計列印內容界面

在薪水報表工作簿裡插入一個工作表,重命名為「列印」,並將原有薪水條格式復制到裡面,然後按以下步驟操作(這裡的操作步驟比較多一點,不過對以後來說能做到「一勞永逸」):

在B2裡輸入=now(),並設置其單元格格式,「數字」標籤中「分類」為「日期」,「類型」為「2001年3月14日」;在I2、A6、B5、C5、D5、E5、F5、G5、H5、B8、C8、D8、E8、F8中分別輸入=VLOOKUP(M5,薪水報表!A:R,2)、=VLOOKUP(M5,薪水報表!A:R,4)、=VLOOKUP(M5,薪水報表!A:R,5)、=VLOOKUP(M5,薪水報表!A:R,6)、=VLOOKUP(M5,薪水報表!A:R,7)、=VLOOKUP(M5,薪水報表!A:R,8)、=VLOOKUP(M5,薪水報表!A:R,9)、=VLOOKUP(M5,薪水報表!A:R,10)、=VLOOKUP(M5,薪水報表!A:R,11)、=VLOOKUP(M5,薪水報表!A:R,12)、=VLOOKUP(M5,薪水報表!A:R,13)、=VLOOKUP(M5,薪水報表!A:R,14)、=VLOOKUP(M5,薪水報表!A:R,15);在J5和F8中分別輸入=SUM(B5:H5)和=J5-SUM(B8:E8),把它們的單元格格式都設置成「數值」並保留兩位小數,在G8中輸入=F8,設置其單元格格式為「特殊」中的「中文大寫數字」,然後選擇第1—9行行標號把此薪水條往下復制3份並分別修改第2、3、4薪水條中的公式,在所有內容保持不變的情況下只須將第2個薪水條中的所有「M5」改為「M5+1」(比如第2個薪水條的I14單元應改為=VLOOKUP(M5+1,薪水報表!A:R,2),其餘類推),第3個薪水條中改為「M5+2」,第4個薪水條中改為「M5+3」。調整好頁面設置使之適合A4頁面,並在4個薪水條之間設置三條單元格邊框虛線以方便列印後切割。

2.設計列印控制界面

在L5、L7和L9中分別輸入「當前序號」、「開始序號」和「結束序號」,留M5、M7和M9存放序號數值,右擊工具欄選擇「窗體」,彈出窗體工具欄,選擇其中的「組合框」在N5單元格畫一個組合框,右擊此組合框選「設置控件格式」,在「控制」標籤中設置「數據源區域」為「薪水報表!$D$3:$D$20」(即薪水報表中的「姓名」區域),「單元格鏈接」為「$M$5」。確定後把這個組合框復制兩份分別放在N7和N9單元格裡,並分別將其「單元格鏈接」改為「$M$7」和「$M$9」。再在「窗體」工具欄中選擇「按鈕」畫一個矩形按鈕放在L13:N14單元格區域中,將其文字改為「列印所選範圍」(圖3),右擊此按鈕,選擇「指定宏」,在彈出窗口中點「新建」按鈕,編輯如下代碼(註釋文字不用輸入):

Excel做到批量列印薪水條

Sub按鈕4_單擊()

序號=Range(“M7”Excel做到批量列印薪水條
.Value

列印:

If序號<=Range(“M9”Excel做到批量列印薪水條
.ValueThen

Range(“M5”Excel做到批量列印薪水條
.Value=序號

IfRange(“M9”Excel做到批量列印薪水條
.Value-序號=0Then

Range(“A1:J9”Excel做到批量列印薪水條
.PrintOutCopies:=1

GoTo結束

EndIf

IfRange(“M9”Excel做到批量列印薪水條
.Value-序號=1Then

Range(“A1:J21”Excel做到批量列印薪水條
.PrintOutCopies:=1

GoTo結束

EndIf

IfRange(“M9”Excel做到批量列印薪水條
.Value-序號=2Then

Range(“A1:J33”Excel做到批量列印薪水條
.PrintOutCopies:=1

GoTo結束

EndIf

‘以上三段If條件語句的作用為當列印到所選序號範圍的最後一頁時,判斷最後一頁的薪水條數目是否足4條,如果不足4條則只列印最後頁所剩餘的條數並結束整個循環。在原裝耗材如此昂貴的年代,我們不得不「惜墨如金」啊

序號=序號+4

Range(“A1:J45”Excel做到批量列印薪水條
.PrintOutCopies:=1

GoTo列印

EndIf

‘如果序號小於等於M9則跳回”列印”循環點,否則中止循環.

結束:

EndSub

為能正常做到列印功能,應將宏的安全性設置一下,點「工具→宏→安全性」,建議將宏的安全性設置為「中」,以後打開此文件時選擇「啟用宏」即可。

3.美化界面

好了,所有的設計工作基本完畢,剩下就就是做一些美化工作,將除A1:J45區域以外的單元格的底紋設置為你所喜歡的顏色(比如天藍色),將M5、M7、M9底紋設成比較醒目的黃色,點「工具→選項」,將「網格線」、「行列標號」和「零值」前的鉤去掉。為防止財務MM的誤操作修改所設計的內容,可點「工具→保護→保護工作表」將工作表保護起來。最後將此文件保存為一個模板(如「薪水條.xlt」)以便以後調用。最後界面如圖4所示。

Excel做到批量列印薪水條

現在只要在M7和M9中輸入開始序號和結束序號(或在右邊的姓名組合框中選擇姓名),再點擊列印的那個按鈕就可一次滿幅面批量列印出所選範圍的員工薪水條,最後一頁記錄如果不足4條並不會列印出多餘的內容來。如果有時僅需要列印某一個員工的薪水條,只要在開始序號和結束序號都輸入該員工的序號(或在右邊組合框都選擇該員工姓名)即可只列印該員工薪水條(同樣不會列印多餘內容),非常方便。在以後的月份中如果有數據變動,只需要改動「薪水報表」中的數據,然後打到「列印」工作表中進行列印,即使有人事變動要在「薪水報表」中增加或刪除員工薪水記錄行,也不會影響「序號」和「薪水條編號」的連續性。

來源:中國電腦報