CompressPictures不再出现在我的PowerPoint的 XML功能区中
多年前我创建了自己的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

