对每张幻灯片上的所有形状进行分组并将图片另存为SVG文件

Group all shapes on each slide and save picture as SVG file

提问人:Blue Sky 提问时间:11/9/2023 最后编辑:Blue Sky 更新时间:11/9/2023 访问量:60

问:

在每张幻灯片上,我想选择所有形状,然后对其进行分组并另存为SVG文件,然后转到下一张幻灯片,直到最后一张幻灯片。到目前为止,这就是我所拥有的,但它无法正常运行。任何建议将不胜感激。

这是我到目前为止的代码

Sub GroupandsaveSVG()
    Dim folderPath As String
    Dim sld As Slide
    Dim shp As Shape
    
    folderPath = Environ("USERPROFILE") & "\Desktop\mySVGs\"
    On Error Resume Next
    MkDir folderPath
    
    For Each sld In ActivePresentation.Slides
    For Each shp In sld.Shapes.SelectAll
    Selection.Group
    Call .Export(folderPath & "Shape" & CStr(x) & ".svg", ppShapeFormatSVG)
    
Next
Next
End Sub

svg文件在保存后也出错。在此处输入图像描述

谢谢

这是在记事本中显示的内容,在此处输入图像描述

VBA 幻灯片

评论

0赞 FunThomas 11/9/2023
您使用哪个版本的 Powerpoint?它支持吗?转到VBA编辑器,打开即时窗口并输入。如果是 6,则一切正常。如果它是 0(也就是未定义),则您的 PP 版本可能太旧了。使用 0 作为参数将创建一个 GIF。ppShapeFormatSVG? ppShapeFormatSVG
0赞 Blue Sky 11/9/2023
我使用 Office 365(版本 2209 Build 15629.20156),我认为它确实支持 SVG,但不确定。但是我可以手动另存为 SVG。我打开VBA编辑器,但不确定如何做到这一点“打开即时窗口并输入?ppShapeFormatSVG”。我只是把它粘贴到我通常粘贴代码并运行的地方吗?我正在做的解决方法是将其导出到 EMF 并使用软件转换为 SVG,但最好一次性完成它。你认为我应该联系他们的支持,看看如果你的工作正常,会发生什么?请问您使用的是什么版本?谢谢
1赞 FunThomas 11/9/2023
即时窗口:在 VBA 环境中,使用“视图”>“即时”窗口或按 Ctrl+G
1赞 John Korchok 11/10/2023
在示例幻灯片上,手动选择所有形状。然后查看功能区上的“形状格式>排列”组。是否启用了 Group 命令?否则,您的代码将失败。无法对占位符进行分组。

答:

0赞 taller 11/9/2023 #1
  • 将形状分组Shapes.Range.Group
  • 导出为 svg 图像Shapes.Range.Export
Option Explicit

Sub GroupSaveSVG()
    Dim folderPath As String
    Dim Sld As Slide
    Dim Shp As Shape
    Dim i As Integer
    folderPath = Environ("USERPROFILE") & "\Desktop\mySVGs\"
    On Error Resume Next
    MkDir folderPath
    On Error GoTo 0
    For Each Sld In ActivePresentation.Slides
        With Sld.Shapes.Range
            If .Count > 1 Then .Group
            .Export folderPath & "Shape" & CStr(i + 1) & ".svg", ppShapeFormatSVG
        End With
        i = i + 1
    Next
End Sub

评论

0赞 Blue Sky 11/9/2023
非常感谢分组完美,它确实保存了SVG文件,但是当打开文件时,它显示错误并且看不到任何图片。当我尝试打开svg文件时,它显示此消息 此页面包含以下错误: 第 1 行第 1 列的错误:应启动标记,找不到“<”第 1 行第 1 列的错误:编码错误 下面是页面的呈现,直到第一个错误。有什么想法吗?再次感谢
0赞 taller 11/9/2023
我已经测试了没有任何问题的代码。幻灯片上的形状是什么?请尝试使用 Chrome 或 MS Edge 打开 svg 以验证图像。
0赞 Blue Sky 11/9/2023
它们只是一组形状,我尝试在 Chrome 上打开它们,但仍然显示此错误消息。我还尝试将保存的文件插入回 PPT,它显示,无法显示图像。此页面包含以下错误: 第 1 行第 1 列的错误:应启动标记,未找到“<”第 1 行第 1 列的错误:编码错误 下面是页面的呈现,直到第一个错误。
0赞 Blue Sky 11/9/2023
我已经在我的原始帖子上放了错误截图,谢谢!
0赞 taller 11/9/2023
请尝试:创建一个新的演示文件,从活动幻灯片中删除所有占位符形状,插入一个形状,然后运行代码。如果导出的svg不起作用,请使用记事本打开svg,并将文件内容粘贴到OP中。