VBA实例1 Excel人员资质及证件管理

VBA实例之Excel台账 人员资质及证件管理

问题引入

大多数中小型企业并不会花费额外的价钱购买文件管理系统,打工人每天重复录入信息、制表、绘图、排版等等,无疑是个异常枯燥乏味且没有意义的过程。VBA虽然已经过时了,但依旧是提高办公效率的一个不错的选择。这里为什么不用Python,明明Python具有更高效更便捷的优势?主要原因是Excel内置py的插件都是付费的,而且订阅费用不低。让公司掏这个钱显然是不现实的,我于是从去年开始重拾VBA,

思路

  1. one_image_aspect:当复制粘贴一张图像到Excel单元格中时,进行初步的格式处理。
  2. image_aspect:根据给定的宽高值(分别对应单元格L2与N2中的值)对头像列与证件列行高、列宽进行调整,同时遍历当前激活的表中所有图像,调整图像宽高值。图像名赋值到所在单元格。
  3. avatar:a.当头像列没有头像时,检查身份证正面列有无头像,若有,通过复制与裁剪生成头像;b.进一步调整头像格式。
  4. TextBox1_Change:a.筛选姓名;b.筛选姓名和单位名称 输入文本时姓名与单位名称中间加空格。

快捷键设置

不会用快捷键的打工人不是合格的打工人。
快捷键的设置仅为个人习惯,在人员信息管理台账、隐患排查治理台账、标识标签管理台账与事故管理台账等文件体系中,我习惯用以下三组快捷键作为默认快捷键。

one_image_aspect:Ctrl + M
image_aspect:Ctrl + Shift + M
avatar:Ctrl + Shift + X

效果

Excel截屏

为便于展示,在网上找了几组证件的图像(侵删)。
在这里插入图片描述

视频演示

视频审核中,待插入……

具体实现

代码很简单,语法和算法不做赘述。需要注意的是,在Excel中,图像并非单元格中的值,不能通过访问单元格中值来获取图像的相关参数。较为常用的一种做法是,遍历图像,通过图像左上角(其他角亦然)所在单元格地址来判断从属关系。VBA因为未知问题,在图像处理过程中容易报错,建议对图像进行压缩处理,压缩为220ppi,以减少故障率。

单个图片

Sub one_image_aspect()
    Dim image_width As Single, image_height As Single
    Dim name As String, idx As Integer, shp As ShapeRange, tlc_address As String
    image_width = Cells(2, "L")
    image_height = Cells(2, "N")
    Application.ScreenUpdating = False
    Rows(Selection.Cells(1, 1).Row).RowHeight = Application.CentimetersToPoints(image_height) + 4
    ActiveSheet.Paste
    Set shp = Selection.ShapeRange
    shp.Left = Selection.Left + 2
    shp.Top = Selection.Top + 2
    shp.LockAspectRatio = msoFalse
    shp.Width = Application.CentimetersToPoints(image_width)
    shp.Height = Application.CentimetersToPoints(image_height)
    Application.ScreenUpdating = True
End Sub

对所有图像进行排版

Sub image_aspect()
    Dim image_width As Single, image_height As Single
    Dim name As String, idx As Integer, shp As Shape, tlc_address As String
    Application.ScreenUpdating = False
    Range(Cells(1, "A"), Cells(1, "H")).Borders(xlEdgeLeft).Weight =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值