【发布时间】:2015-03-25 23:31:58
【问题描述】:
我意识到 Powerpoint 中的某些形状被锁定以防止旋转和翻转。从我目前看到的情况来看(通过检查 Powerpoint 文件中的 XML),有一个名为 noRot 的标志可以采用值 0 或 1 此标志位于 a splocks XML 标记中。如果此标志设置为1,则无法旋转该形状。但是,使用通常的 Powerpoint 方法似乎无法访问此标志(即,我找不到代表此标志的任何复选框)。
其中一个被锁定的元素可以通过以下方式获得:
- 打开 Powerpoint 2003(应该会弹出一个空白的默认演示文稿)
- 视图 - 母版 - 幻灯片母版
- 应该锁定居中的大占位符文本框
我保存了一个包含此文本框的演示文稿,在各种版本的 Powerpoint 中打开它,专门选择了保存的文本框,并在所选内容上尝试了以下 VBA 命令:
ActiveWindow.Selection.ShapeRange(1).Rotation = 10
ActiveWindow.Selection.ShapeRange(1).Flip msoFlipHorizontal
在所有版本中,这些命令都会失败。
-
设置旋转失败:
- Powerpoint 2003:“运行时错误 70:权限被拒绝”
- Powerpoint 2007 及以后版本:“运行时错误 -2147024809 (80070057):形状已锁定,无法旋转”
-
翻转失败:
- Powerpoint 2003:静默(即没有运行时错误,但没有可观察到的变化)
- Powerpoint 2007 及以后版本:“运行时错误 -2147024809 (80070057):形状已锁定,无法旋转”
我意识到已经有一种产品 (ShapeLocker) 可以锁定/解锁这些形状。然而,显然这个工具似乎修改了看起来相当麻烦的 XML。
是否有任何已知/记录的方式如何(取消)在 VBA 中设置此标志(或者甚至可以在某些 Powerpoint 复选框中完成,我忽略了)?
【问题讨论】:
标签: vba powerpoint