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
相关推荐
你好潘先生7 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
orion5718 小时前
Missing Semester Class1:course overview and introduction of shell
linux
用户120487221611 天前
Linux驱动编译与加载
linux·嵌入式
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
用户805533698031 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户805533698031 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
七歌杜金房2 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia3 天前
linux curl命令详解_curl详解
linux