尝试在PowerPoint中设置形状的.Line.Visible属性时出现未指定的错误

Dav*_*ens 5 powerpoint vba powerpoint-vba

我有一个令人烦恼的问题,它正在影响一个用户.

我无法在我的机器上复制错误.我正在使用的另一个开发人员也无法在他的机器上复制.但是,我们能够隔离用户计算机上的错误.我正在使用MS Office 2010/PowerPoint 2010 /等运行Win 7 Enterprise Version 6.1 Build 7600.

对于一个用户,会发生相关错误.Line.Visible = msoFalse.错误提升为:

Run-time error '-2147467259 (80004005)':
Method 'Visible' of object 'LineFormat' failed
Run Code Online (Sandbox Code Playgroud)

可见显然是形状的属性.Line.我可以在Locals窗口中查看它:

在此输入图像描述

我能够在即时窗口中查询此属性值而不会出现错误:

在此输入图像描述

输入:tb.Line.Visible = msoTrue使线条可见(如预期的那样)

输入:tb.Line.Visible = msoFalse使用相同的代码产生"自动化错误/未指定的错误":

在此输入图像描述

这是一些示例代码.我尝试过尺寸标注tb,Shape但这会产生Type 13 Mismatch错误.我也试过设置属性值0而不是msoFalse错误,但错误仍然存​​在.

Sub TestCode()
Dim cht as Chart
Dim tb As Object

    Set cht = ActivePresentation.Slides(1).Shapes("Chart 1").Chart
    Set tb = cht.Shapes.AddTextbox(msoTextOrientationHorizontal, ptLeft, tBoxTop, ptWidth, ptHeight) 'NOTE: tb.Type = msoTextBox

    tb.Select  '<--- KEEP THIS LINE OTHERWISE TEXTBOX _
               '     ALIGNMENT WILL NOT WORK 

    With tb
        With .TextFrame2.TextRange.Characters
            .Text = "foo"
        End With
        .Fill.Visible = msoFalse
        .Line.Visible = msoFalse
        .TextFrame2.WordWrap = msoFalse
        .TextFrame2.TextRange.Font.Bold = True
        .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
        .TextFrame2.AutoSize = msoAutoSizeTextToFitShape
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

此子例程从表单按钮单击事件包装在主错误处理程序中,因此我们不会丢失数据或使应用程序崩溃,但它确实阻止加载项以所需方式构建图表/图形.

由于默认值.Line.Visible msoFalse(所以我可以注释掉有问题的代码行),这不是特别关键,但它确实需要代码更改和PPAM的重新分配.

我想知道为什么会发生这种情况,以及是否有办法"修复"这个不涉及评论违规行或进行处理的On Error Resume Next方法.

更新(来自评论,澄清)

该示例是用于处理文本框标注的放置和格式化的若干这样的子例程之一,这些是msoTextBox在现有形状的形状集合(例如,图形形状)内添加的所有类型的形状.

所有类似的调用都会object.Line.Visible = msoFalse失败并出现相同的错误.

,每个都会在她的机器上引发同样的错误.其他类似的调用,例如,.MajorGridlines.format.Line.Visible = msoFalse没有出错. 

Dav*_*ens 0

这并不完全是一个令人满意的答案,但我只需注释掉有问题的代码行就可以避免该错误。由于在创建 TextBox 时,该属性已设置为msoFalse,因此它是多余的代码,可以省略。