VBA Excel + Powerpoint:对象“ ChartData”的偶尔VBA方法“激活”失败

时间:2019-12-16 14:17:23

标签: excel vba charts powerpoint

我已经阅读了有关此问题的几篇文章,试图解决我的问题没有成功。

我用excel工作表中的数据更新Powerpoint图表(不是链接的数据,数据在Powerpoint图表的“内部”)。有超过100个图表。 它可以在多台计算机上正常运行(w10 / 7,Office 365 = 2016),但是在某些计算机上,偶尔会因激活“ ChartData”对象而出现错误“对象'ChartData'的方法'Activate'失败”而停止。如果我选择“恢复”,它将继续正常运行,就像没有错误一样。

从等价错误的帖子中可以看出,我先激活powerpoint,然后选择幻灯片,图表,等待1秒钟后激活chartdata,依此类推。看来没有什么是正确的。

NB:发生错误时,我尝试5次以每次尝试1秒的速度重新打开图表数据,但最终都出错了。

这是代码(开放)。

Private Sub OpenChartDataWorkBook(ByRef pptSld As PowerPoint.Slide, ByRef pptGrph As PowerPoint.Chart, ByRef gData As PowerPoint.ChartData, _
        ByRef gWBK As Excel.Workbook, ByRef gWSH As Excel.Worksheet, Optional nbErr As Integer = 0)
        ' execution des instruction d acces au workbook d un graphique powerpoint

    Redo:
    If nbErr < 5 Then
        On Error GoTo ErrDo
    End If
    pptSld.Application.Visible = msoTrue ' rend ppt visible
    pptSld.Application.Activate ' active ppt
    pptSld.Select ' selectionne la slide
    If pptGrph.Parent.Visible = True Then
        pptGrph.Parent.Select ' selectionne la shape
        pptGrph.Select ' selectionne le graphique
    End If
    Set gData = pptGrph.ChartData
    Call WasteTime(1000)  ' attente d une seconde
    gData.Activate
    Set gWBK = gData.Workbook
    gWBK.Application.WindowState = -4140 ' rendre invisible
    Set gWSH = gWBK.Sheets(1)
    Exit Sub

ErrDo:
    On Error GoTo 0
    nbErr = nbErr + 1
    Call WasteTime(1000)  ' attente d une seconde
    Call OpenChartDataWorkBook(pptSld, pptGrph, gData, gWBK, gWSH, nbErr)

End Sub

变量在声明之前,之后不设置。 没有使用此代码生成的Excel实例。 可以使用相同类型的代码来关闭图表。

错误出现在“ gData.Activate”行上。它大部分时间都有效,但通常会停止:“ Erreur d'exécution'-1328086629(b0d7019b)':Laméthode'Activate'de l'objet“ ChartData'aéchoué”。

感谢您的帮助。 皮埃尔。

0 个答案:

没有答案