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没有不出错.