4.5.7-代码解析:L115_Sub_员工照片

该过程的目标就是在员工档案中A2-B8区域插入照片信息。首先我们需要在模板中将该区域的所有行设置同样的高度,列设置成同样的宽度,另外我们需要提前将照片放在一个固定的文件夹中,且以员工姓名来命名对应的照片文件。代码逻辑如下:

  • 1)获取该员工照片地址信息

  • 2)判断员工照片是否存在

  • 3)加入一个矩形框,矩形框的宽度为A2单元格的2倍,高度为7倍,也就是A2-B8区域

  • 4)对矩形框进行图片填充,填充的图片即为员工的照片

对于插入图片那一段代码第9行-第22行,可以通过录制宏的模式先生成,再更改部分代码即可。

代码如下

1   Sub L115_Sub_员工照片(shtOutput, employeeName)
2       currentPath = ThisWorkbook.Path
3       folderAddress = currentPath & "\" & "图片库"
4       photoName = employeeName & ".png"
5       photoAddress = folderAddress & "\" & photoName
6       
7       If Dir(photoAddress) <> "" Then
8           'msoShapeRectangle是类别,是一个矩形
9           shtOutput.Shapes.AddShape(msoShapeRectangle, _
10          shtOutput.Range("A2").Left, _
11          shtOutput.Range("B2").Top, _
12          shtOutput.Range("A2").Width * 2, _
13          shtOutput.Range("A2").Height * 7).Select
14      
15          Selection.ShapeRange.Fill.Visible = msoFalse
16          Selection.ShapeRange.Line.Visible = msoTrue
17      
18          With Selection.ShapeRange.Fill
19              .Visible = msoTrue
20              .UserPicture photoAddress
21              .TextureTile = msoFalse
22          End With
23      End If
24  End Sub

关键代码解读

1)第9-13行shtOutput.Shapes.AddShape(msoShapeRectangle,最左侧位置,最上侧位置,宽度,高度)。最左侧位置使用A2单元格位置,最上侧位置使用B2单元格位置(这里使用A2也是一样的),宽度为A2的2倍,高度为7倍。在这里也说明了为什么刚开始将这个区域的高度宽度设置成一致的原因。该方法如果在其它地方用,核心需要修改的为第10-13,表示拟加入图片单元格区域的信息,以及第20行,表示填充图片的地址