CompressPictures不再出现在我的PowerPoint的 XML功能区中

后端开发 2026-07-09

多年前我创建了自己的PowerPoint加载项。它现在仍被广泛使用。它的部分内容是我自己的VBA宏,其他的只是MSO函数。其中一个就是“Compress Pictures”(压缩图片)。我最近发现按钮已经消失了(Windows 11,Microsoft 365)。

多年来一直有效的XML代码是:

<button idMso="PicturesCompress" enabled="true" showLabel="false"/>

有人知道微软是否改了idMso(如果改了,新的是什么?)

另外我也已经尝试过:

<control idMso="PicturesCompress" enabled="true" showLabel="false"/>

但那没有任何改变,这也是我推断他们可能改了idMso的原因。

我想在这里避免任何VBA的变通方法。应该有一个XML解决方案可以让它重新显示。

解决方案

我可以重现PicturesCompress不再起作用。调用时它会抛出错误。

如果你的目标是显示“压缩图片”对话框,前面的建议应该可行。我没有去创建自己的功能区按钮,但快速测试的方法是在代码中或即时窗口中使用ExecuteMso方法:

Application.CommandBars.ExecuteMso ("OptimizePictDialogInFlayoutAnchor")

在此处输入图片描述

你可以通过在功能区的任意空白区域右键,选择“自定义功能区”(或选择“文件 | 选项 | 自定义功能区”)来找到用于ExecuteMso的名称。

选择显示ALL命令,定位你要的命令并将鼠标悬停在它上面:

在此处输入图片描述

用竖线分隔的部分大致描述了命令在UI中的位置。就这个例子而言,它位于“图片格式”选项卡的“调整”组中(到目前为止这是“更多”,现在到了“较少”),因为按钮不再标注为“压缩图片”,而是改为了“图片质量”。它是一个下拉菜单,而不是一个“flayout”。MS.AI在这方面可能把自己绊住了。

供参考,我已经把这个“flayout”错误报告给微软;将来某一天它可能会变成“flyout”,所以如果你的宏再次失效,你就知道该往哪里查。

不幸的是,除了通过SendKeys之外,没有办法以编程方式指定对话框的参数。如果你能将图片导出为文件,你可以在同一位置重新添加它,并在过程中指定压缩,使用AddPicture2方法:

https://learn.microsoft.com/en-us/office/vba/api/powerpoint.shapes.addpicture2

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章