4.5.3-代码解析:L11_Fun_createPersonalFile

该函数实现的功能如下:

  • 1)根据员工的姓名复制模板文件,生成个人档案文件

  • 2)对个人档案文件更新以下五类信息,每一类更新采用一个函数或者过程实现

  • 2.1)人员信息更新,包含籍贯、毕业院校等

  • 2.2)考核成绩更新

  • 2.3)证书信息更新

  • 2.4)获奖信息

  • 2.5)员工照片

代码如下

1   Function L11_Fun_createPersonalFile(employeeName)
2       Application.DisplayAlerts = False
3       
4       currentPath = ThisWorkbook.Path
5       folderAddress = currentPath & "\" & "个人档案"
6       newFileName = employeeName & ".xlsx"
7       
8       newFileAddress = folderAddress & "\" & newFileName
9       ' 检查文件是否已经存在,存在则删除
10      If Dir(newFileAddress) <> "" Then
11          Kill newFileAddress
12      End If
13      
14      templateFile = "个人档案模板.xlsx"
15      templateFileAddress = currentPath & "\" & templateFile
16      FileCopy templateFileAddress, newFileAddress
17      
18      Set wb = Workbooks.Open(newFileAddress)
19      Set shtOutput = wb.Worksheets(1)
20      
21      ' 填入信息
22      shtOutput.Range("D2") = employeeName
23      shtOutput.Range("F1") = Now()
24      
25      tips1 = L111_Fun_人员信息(shtOutput, employeeName)
26      tips2 = L112_Fun_考核成绩(shtOutput, employeeName)
27      Call L113_Sub_证书(shtOutput, employeeName)
28      Call L114_Sub_获奖(shtOutput, employeeName)
29      Call L115_Sub_员工照片(shtOutput, employeeName)
30      
31      wb.Save
32      wb.Close
33      
34      returnTips = tips1 & ";" & tips2
35      
36      L11_Fun_createPersonalFile = returnTips
37  End Function

代码中文解析

1   Function L11_Fun_createPersonalFile(employeeName)  '传入参数employeeName
2       关闭警告信息
3       
4       获取当前文件所在绝对地址currentPath
5       获取当前文件夹下子文件夹"个人档案"的地址,对应变量名为folderAddress
6       设定新生成的员工个人档案文件命名为员工姓名.xlsx,对应变量名为newFileName
7       
8       拟打算将新生成的个人档案文件放置于"个人档案"文件夹下,其绝对地址为newFileAddress
9       ' 注释
10      判断开始:判断员工个人档案文件是否已经存在,如果是则执行以下语句
11          删除已有员工个人档案
12      判断结束
13      
14      默认文件名称为templateFile
15      默认文件地址为templateFileAddress
16      文件复制,复制模板文件到"个人档案"文件夹下,命名为newFileAddress
17      
18      设置wb表示打开的新生成的员工档案Excel文件
19      获取该工作簿的第1个工作表,表示为shtOutput
20      
21      ' 注释
22      在员工个人档案工作表shtOutput的"D2"单元格写入员工姓名employeeName
23      在员工个人档案工作表shtOutput的"F1"单元格写入当前时间
24      
25      设置tips1为函数 L111_Fun_人员信息(shtOutput, employeeName) 的返回值
26      设置tips2为函数 L112_Fun_考核成绩(shtOutput, employeeName) 的返回值
27      调用过程 L113_Sub_证书(shtOutput, employeeName)
28      调用过程 L114_Sub_获奖(shtOutput, employeeName)
29      调用过程 L115_Sub_员工照片(shtOutput, employeeName)
30      
31      保存员工个人档案工作簿wb
32      关闭员工个人档案工作簿wb
33      
34      将tips1与tips2以";"连接起来,并赋值给returnTips
35      
36      设置函数返回值为returnTips
37  End Function

经过以上文章的多次每行的解读,相信大家对VBA的基础使用应该有了一个初步的认识,后续的文章不再逐句进行中文的解析,只对关键语句进行中文解析

关键代码解读

1)第2行Application.DisplayAlerts = False。关闭警告,当我们去掉该句,或者改为True。当执行到wb.Save时,会弹窗提示,如图4-16所示,需要人为关闭该弹框。这样当我们批量生成员工档案的时候就会很麻烦。


../_images/4-16.png

图4-16 警告提示


2)第31行wb.Save。保存Excel文件,对新生成的Excel文件填写相关信息后务必保存,否则一波操作全浪费。

3)第36行L11_Fun_createPersonalFile = returnTips。变量returnTips赋值给函数名,表示该函数的返回值为returnTips。当整个函数内部没有任何变量或者值赋值给函数名,那么这个函数不返回任何值,若设置X=函数(),在本地窗口查看X的值,为空值,类型为Empty,如图4-17所示。


../_images/4-17.png

图4-17 函数返回值