夜雨聆风学习资料网

ARTICLE · 1165121

Excel图片放大工具

Excel图片放大工具

一、Excel图片放大工具

适用场景:在利用Excel记录优化内容图片、有限元云图、试验截图、零部件照片经常需要等比例放大查看细节,再次单击恢复原始尺寸,但是Excel中并没有这个功能全(WPS自带这个功能),因此利用VBA语言解决该问题。

(一)工具特点

  • ●全工作表支持,工作簿内任意工作表图片均可生效
  • ●打开文件自动绑定全部图片,自动重命名避免shape名称冲突
  • ●新增/复制粘贴图片后,一键全局刷新绑定
  • ●等比例缩放,云图不会拉伸变形
  • ●放大倍数可自定义
  • ●使用图片可选文字存储原始尺寸,无全局变量,稳定性好

(二)部署说明

文件必须另存为 .xlsm(启用宏的工作簿),普通xlsx无法保存VBA代码。

快捷键 Alt+F11 打开VBA编辑器。

1、ThisWorkbook 代码

左侧工程窗口双击 ThisWorkbook,粘贴以下代码

Private Sub Workbook_Open()    Dim ws As Worksheet    Dim cName$    Dim a As Shape    On Error Resume Next    '遍历全部工作表    For Each ws In ThisWorkbook.Worksheets        For Each a In ws.Shapes            If a.Type = 1 Or a.Type = 13 Then                a.OnAction = "test"                cName = a.TopLeftCell.Address(0, 0)                Do                    Err.Clear                    a.Name = cName                    If Err = 0 Then Exit Do                    cName = cName & "_0"                Loop            End If        Next a    Next wsEnd Sub

2、标准模块代码

顶部菜单:插入 → 模块,一次性粘贴下面两段代码

Sub test()    On Error Resume Next    Dim a As Shape    For Each a In ActiveSheet.Shapes        If a.Type = 1 Or a.Type = 13 Then            If a.Name = Application.Caller And a.AlternativeText = Empty Then                '保存原图宽高                a.AlternativeText = a.Height & Chr(28) & a.Width                '锁定纵横比,等比例放大                a.LockAspectRatio = msoTrue                a.ScaleHeight 5, msoFalse                a.ZOrder msoBringToFront            Else                '恢复原始尺寸                Dim arr                arr = Split(a.AlternativeText, Chr(28))                a.LockAspectRatio = msoTrue                a.Height = arr(0)                a.Width = arr(1)                a.AlternativeText = Empty            End If            Err.Clear        End If    Next aEnd SubSub RefreshAllPicBind()    Dim ws As Worksheet    Dim cName$    Dim a As Shape    On Error Resume Next    For Each ws In ThisWorkbook.Worksheets        For Each a In ws.Shapes            If a.Type = 1 Or a.Type = 13 Then                a.OnAction = "test"                cName = a.TopLeftCell.Address(0, 0)                Do                    Err.Clear                    a.Name = cName                    If Err = 0 Then Exit Do                    cName = cName & "_0"                Loop            End If        Next a    Next ws    MsgBox "全局图片绑定刷新完成!所有工作表图片已生效"End Sub

(三)使用步骤

1、粘贴代码完成后,保存为.xlsm,关闭文件重新打开,启用内容。

2、原有图片:打开文件自动完成绑定,单击放大,再次单击复原。

3、新增图片 / 复制粘贴图片后:

  • ●快捷键 Alt+F8
  • ●选中 RefreshAllPicBind → 执行

4、可选:开发工具插入【表单控件按钮】,指定宏RefreshAllPicBind,实现一键刷新。

(四)修改放大倍数

找到test子过程中这一行,修改数字即可:

a.ScaleHeight 5, msoFalse

示例:3倍写3,4倍写4,5倍写5

(五)使用注意事项

  • ●图片数量很大时,全局刷新会短暂卡顿,属于正常现象。
  • ●报告定稿导出PDF前,务必将所有图片恢复原始尺寸。
  • ●复制粘贴图片后,必须执行RefreshAllPicBind刷新绑定。
  • ●企业办公环境若禁用宏,工具无法运行。

#CAE #强度耐久 #有限元仿真 #ExcelVBA #工程报告 #仿真工程师

相关学习资料