我在 PowerPoint VBA 中遇到一个特殊问题,当选择或取消选择 SVG 文件(视为图形元素)时,似乎不会触发
SelectionChange
事件。此行为与事件对其他类型对象(例如形状或文本框)的响应方式不一致。
在我的 PowerPoint VBA 项目中,我依靠 App_WindowSelectionChange 事件来检测用户何时选择幻灯片上的不同对象。这对于我的加载项的功能至关重要,因为它根据当前选择更新功能区 UI。这已经是解决方法,因为我第一次在 CustomUI.xml 中使用
getVisible
方法时遇到错误。
我正在尝试操作功能区,这是我的事件处理程序的简化版本:
Public WithEvents App As Application
Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
' Code to update Ribbon based on selection
End Sub
对于形状和文本框等标准 PowerPoint 对象,此设置按预期工作。但是,当选择 SVG 文件或更具体的图形对象时,该事件不会触发。因此,我的功能区 UI 无法正确更新以响应 SVG 选择。
我认为,PowerPoint 在其事件处理机制中可能存在限制或疏忽,特别是在 SVG 文件方面。与标准形状不同,SVG 内部的处理方式可能有所不同,从而导致事件触发方面存在差异。
我正在寻找一种解决方法或解决方案来可靠地检测 PowerPoint 中的 SVG 文件(图标)选择。我的目标是让功能区 UI 响应这些选择,就像响应其他对象一样。
如果有人遇到类似问题或对 PowerPoint 如何在事件处理方面处理 SVG 文件有深入了解,我们将不胜感激。
我也有同样的问题,基本上.svg图像通过VBA是不可见的。这可能是因为它们只是嵌入到幻灯片中,但“真实”图像存储在 PowerPoint 文件中。
您提到了原始 .svg 文件中存在的画布,它不会被 PowerPoint 转换为 DrawingML(通过功能区按钮“转换为形状”)。这样的画布要么是
我建议的解决方案是
上述操作可以手动或通过代码完成(直接使用 VBA 或使用 XSLT)(我只找到标签,对于属性,你必须四处查看)
作为参考,如果您有兴趣,这里有关如何在 OOXML 中对形状进行编码的一些信息。