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
相关推荐
si莉亚1 小时前
ROS2安装EVO工具包
linux·开发语言·c++·开源
Tingjct1 小时前
Linux常用指令
linux·运维·服务器
广州灵眸科技有限公司1 小时前
为RK3588注入澎湃算力:RK1820 AI加速卡完整适配与评测指南
linux·网络·人工智能·物联网·算法
daad7771 小时前
wifi_note
运维·服务器·数据库
IT界的老黄牛1 小时前
Linux 压缩命令实战:tar、gzip、bzip2、xz、zstd 怎么选?一篇讲清楚
linux·运维·服务器
IT WorryFree2 小时前
飞塔防火墙与第三方设备进行IPSEC故障诊断期间,用户可能会观察到以下错误:
linux·服务器·网络
12345,catch a tiger2 小时前
虚拟机ubuntu安装Vmware Tools
linux·运维·ubuntu
✎ ﹏梦醒͜ღ҉繁华落℘2 小时前
Makefile -GNU和MakeFile关系(二)
服务器·gnu
凉、介2 小时前
别再把 PCIe 的 inbound/outbound、iATU 和 eDMA 混为一谈
linux·笔记·学习·嵌入式·pcie
辰风沐阳2 小时前
OpenClaw 安装教程(Ubuntu 24.04 Desktop)
linux·ubuntu