黃小毛 劉清鈺
本文使用的工資數(shù)據(jù)模板如下所示。
第1行為標(biāo)題行,第2行為數(shù)據(jù)的頭行,以下為數(shù)據(jù)區(qū)域。
第A列至第D列依次為“員工編號(hào)”、“員工姓名”、“員工部門(mén)”和“員工崗位”,這四列顯示了員工的基本信息。
第E列至第I列為各項(xiàng)該名員工本月應(yīng)該發(fā)放的工資,依次為“基本工資”、“績(jī)效工資”、“獎(jiǎng)金”、“補(bǔ)貼”和“加班工資”,然后第J列為這五項(xiàng)的匯總項(xiàng),代表了本月該員工在未扣除相關(guān)項(xiàng)目時(shí)應(yīng)得的工資,以J2為例,J2=E2+F2+G2+H2+I2。
第K列和第N列為扣除項(xiàng),依次為“五險(xiǎn)一金扣除”、“事、病假扣除”、“其他扣款”和所得稅扣款。其中“其他扣款”指的是不能分類(lèi)進(jìn)其他扣除項(xiàng)目的項(xiàng)目,例如以前月份多扣工資的返還,如果是扣除項(xiàng)則以正數(shù)表示,如果是增加項(xiàng)則以負(fù)數(shù)表示。第O列是“實(shí)發(fā)工資”,表示該名員工本月應(yīng)該收到的錢(qián),以O(shè)2為例,O2=J2-K2-L2-M2-N2。
由于需要使用Outlook郵箱來(lái)發(fā)送工資條,在原有數(shù)據(jù)的右邊增設(shè)“郵箱”一列,即P列,使用VLOOKUP函數(shù)在“聯(lián)系方式工作表”中按員工編號(hào)來(lái)查找“郵箱”,以P1為例,P1輸入函數(shù)VLOOKUP(A2,聯(lián)系方式!A2:E11,5,0)。
另外在R列插入標(biāo)題為“圖片文件名”一列,在此例中,郵件的標(biāo)題與生成的工資條圖片相同,故不額外填寫(xiě)郵件標(biāo)題,以R1為例,輸入公式“A2&”-“&B2&”-“2020年1月工資明細(xì)”,命名格式為“員工編號(hào)-員工姓名-2020年1月工資明細(xì)”。
首先在數(shù)據(jù)工作表中插入一個(gè)“按鈕(窗體控件1)”,命名為“Step1:Make Pay Stub”,在VBA模塊中輸入以下代碼:
這串代碼首先會(huì)聲明一個(gè)名為“number1”的Integer型的變量,變量的值為當(dāng)前工資表包含A1單元格的區(qū)域A列最下方單元格的行數(shù),在此例中為11(第1行的標(biāo)題和第2行到第11行的數(shù)據(jù),之后再聲明一個(gè)名為“i”的Integer型變量,接著是一個(gè)用來(lái)定義“i”的For Next語(yǔ)句,“i”等于3到“number1”的值的2倍減3,間隔為2,這段語(yǔ)句的作用是將第1行的標(biāo)題復(fù)制粘貼到從第3行(數(shù)據(jù)的第2行)開(kāi)始到最后一行之中每一行的上一行,原來(lái)的數(shù)據(jù)下移一行,最終生成工資條數(shù)據(jù)區(qū)域。
插入一個(gè)“按鈕(窗體控件)”,命名為“Step2:Make Picture”,在VBA模塊中輸入如下代碼:
這段代碼首先會(huì)聲明一個(gè)名為“path1”的String型變量,接著會(huì)彈出一個(gè)對(duì)話框。這里要求使用者輸入接下來(lái)保存工資條圖片的文件夾路徑,如果該文件夾不存在,將會(huì)新建一個(gè),這里輸入的是“C:Users11796Desktop工資條”,意思是保存在桌面的名為“工資條”的文件夾。接下來(lái)定義一個(gè)名為“number2”的Integer型變量,它的含義與“Step1:Make Pay Stub”中“number1”的含義相同,但兩者屬于不同的宏,所以需要重新定義。
之后會(huì)彈出主題分別為“請(qǐng)輸入生成工資條起始列”和“請(qǐng)輸入生成工資條結(jié)束列”兩個(gè)對(duì)話框,可以根據(jù)需求來(lái)自主選擇,如果需要員工個(gè)人信息在里面就分別輸入“A”和“O”,如果只需要工資信息就輸入“E”和“O”,本例中輸入的是后者。
再后會(huì)彈出一個(gè)主題為“請(qǐng)選擇圖片名稱列”的彈窗,這里輸入圖片文件名這列“Q”。最后定義一個(gè)名為“k”的Integer型變量,加入一個(gè)For Next語(yǔ)句,“k”的值從1到“number2”的值-1,間隔為2,這段語(yǔ)句會(huì)依次將“E1:O2”、“E3:O4”以此類(lèi)推到最后的單元格導(dǎo)出為圖片并保存至剛剛創(chuàng)建的“C:Users11796Desktop工資條”文件夾,并以Q列的值命名,命名規(guī)則為“員工編號(hào)-員工姓名-2020年1月工資明細(xì)”。
插入一個(gè)名為“Step3:Send Email”的按鈕(窗體控件),輸入如下代碼:
這段代碼首先會(huì)打開(kāi)Outlook郵箱應(yīng)用,然后使用默認(rèn)的發(fā)件人新建一封郵件。接下來(lái)出現(xiàn)的四個(gè)對(duì)話框的主題分別為:“請(qǐng)輸入文件夾路徑”,“請(qǐng)輸入收件人列”,“請(qǐng)輸入主題列”,“請(qǐng)輸入圖片名稱列”,第一個(gè)對(duì)話框輸入“Step2:Make Picture”中用來(lái)保存工資條圖片的文件路徑,第二個(gè)對(duì)話框輸入郵箱列,在這里輸入“P”,郵件主題和圖片文件名是相同的,所以在第三、四對(duì)話框都輸入“Q”,接下來(lái)的For Next語(yǔ)句將會(huì)保存在“C:Users11796Desktop工資條”文件夾下的工資條圖片,以與工資條圖片同名的主題發(fā)送至一一對(duì)應(yīng)的郵箱。
本例中使用Excel VBA功能在模塊中制作了三段代碼,分別實(shí)現(xiàn)了生成工資條、導(dǎo)出工資條圖片和發(fā)送郵件三項(xiàng)功能,適用于數(shù)據(jù)區(qū)域左上角為A1單元格,第1行為標(biāo)題的所有工資數(shù)據(jù)模板,缺陷是outlook郵箱在實(shí)際工作中使用得較少,第三步功能有時(shí)候無(wú)法完成,但是依然提高了效率和質(zhì)量,使原來(lái)復(fù)雜的工作簡(jiǎn)單化。
中國(guó)農(nóng)業(yè)會(huì)計(jì)2021年4期