【问题标题】:Shape.Height and Shape.Width problems in PowerPoint 2013PowerPoint 2013 中的 Shape.Height 和 Shape.Width 问题
【发布时间】:2013-05-14 07:04:02
【问题描述】:

我正在使用一个小的 VBA 脚本在后台应用一些文本。该脚本在 PowerPoint 2007 和 PowerPoint 2010 上运行良好。

但是,在 PowerPoint 2013 中,设置 Shape.Height 和 Shape.Width 无效。这是代码的sn-p。任何帮助将不胜感激。

Public Sub applyWatermark()

Dim curDesign As Design
Set curDesign = ActivePresentation.Designs.Item(1)
Dim masterSlide As Master
Set masterSlide = curDesign.SlideMaster

Dim shape As shape
Set shape = masterSlide.Shapes.AddTextbox(msoShapeRectangle, 0#, 0#, 100#, 100#)

shape.TextEffect.Text = "Watermark"

' Setting height and width works fine on PPT 2010 but does not work on PPT 2013
shape.Height = 200
shape.Width = 300

shape.TextFrame2.WordWrap = msoTrue
shape.TextFrame2.WarpFormat = msoWarpFormat1
shape.Left = 200
shape.Top = 200

End Sub

【问题讨论】:

  • 您是否尝试过在Set shape = masterSlide.Shapes... 中设置高度和宽度属性??也许这样会更可靠。
  • 我在 msdn 上发布了这个问题,并找到了将 warpFormat 设置为 msoWarpForm37 的解决方法,并且成功了。

标签: vba powerpoint office-2013


【解决方案1】:

我相信这是 MS 开发团队的一个已知限制 - 在某些情况下,它只是无法正确触发。一种建议是改为更改字体大小,但如果您确实需要形状中的特定字体大小,这并没有多大帮助。

【讨论】:

  • 确实如此。 .height(以及宽度、顶部和左侧)是我一直遇到此类错误的唯一地方,除非您逐步使用 F8,否则它们根本不会触发。我在 TextBoxes、ChartObject.PlotArea 等上都有过这个……如果我没记错的话,在大多数情况下,如果你 Select 形状,它会正确设置这些属性。我讨厌Select,因为它通常可以避免,但这是我认为我需要使用它的一个地方。
  • Select 是一个合适的解决方法——我什至没有想到这一点。
【解决方案2】:

这是 PowerPoint 2013 的问题。

解决方法是设置

Myshape.TextFrame2.WarpFormat = msoWarpFormat37

http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/2c1cf339-aa90-4d82-9475-0ff5f49ac1b1/ 提供了解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多