PPT宏代码

以下代码适用于:当每张幻灯片由一张图制作,快速统一图片格式。

1、将所有ppt中所有幻灯片中的图更改为宽度34cm,固定纵横比

vbscript 复制代码
Sub ResizeAllPictures()
    Dim sld As Slide
    Dim shp As Shape
    Dim targetWidth As Single
    Dim aspectRatio As Single
    
    ' 设置目标宽度为34厘米
    ' 1厘米 = 28.34646磅 (Points),这是PowerPoint内部单位
    targetWidth = 34 * 28.34646
    
    ' 遍历所有幻灯片
    For Each sld In ActivePresentation.Slides
        ' 遍历幻灯片中的所有形状
        For Each shp In sld.Shapes
            ' 判断形状是否为图片
            If shp.Type = msoPicture Then
                ' 计算当前图片的宽高比
                aspectRatio = shp.Height / shp.Width
                
                ' 设置宽度为34厘米(转换为磅值)
                shp.Width = targetWidth
                
                ' 根据原始宽高比设置高度
                shp.Height = targetWidth * aspectRatio
            End If
        Next shp
    Next sld
    
    MsgBox "已将所有图片宽度设置为34厘米,并保持纵横比!", vbInformation, "操作完成"
End Sub

2、将ppt所有幻灯片中的图片使用代码一键上下居中、左右居中

vbscript 复制代码
Sub CenterAllPicturesEnhanced()
    Dim sld As Slide
    Dim shp As Shape
    Dim slideWidth As Single
    Dim slideHeight As Single
    Dim picCount As Integer
    Dim originalAspectRatio As Boolean
    
    On Error GoTo ErrorHandler
    
    picCount = 0
    
    ' 遍历所有幻灯片
    For Each sld In ActivePresentation.Slides
        slideWidth = sld.Master.Width
        slideHeight = sld.Master.Height
        
        ' 遍历幻灯片中的所有形状
        For Each shp In sld.Shapes
            ' 检查形状是否为图片且可见
            If shp.Type = msoPicture And shp.Visible Then
                ' 保存原始纵横比设置
                originalAspectRatio = shp.LockAspectRatio
                ' 确保纵横比锁定,防止图片变形
                shp.LockAspectRatio = msoTrue
                
                ' 计算居中位置:cite[1]
                shp.Left = (slideWidth - shp.Width) / 2
                shp.Top = (slideHeight - shp.Height) / 2
                
                ' 恢复原始纵横比设置
                shp.LockAspectRatio = originalAspectRatio
                
                picCount = picCount + 1
            End If
        Next shp
    Next sld
    
    If picCount > 0 Then
        MsgBox "成功将 " & picCount & " 张图片在各自幻灯片中居中对齐。", vbInformation, "操作完成"
    Else
        MsgBox "未在演示文稿中找到任何图片。", vbExclamation, "提示"
    End If
    
    Exit Sub
    
ErrorHandler:
    MsgBox "发生错误:" & Err.Description, vbCritical, "错误"
End Sub
相关推荐
Yana.nice4 小时前
Linux 只保留 30 天内日志(find命令删除日志文件)
linux·运维·chrome
吳所畏惧8 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈8 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
维天说9 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling9 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind9 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的阿森9 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森9 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
吠品10 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
XMAIPC_Robot10 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发