首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除电源点幻灯片中的现有图表,使用VBA替换新图表

删除电源点幻灯片中的现有图表,使用VBA替换新图表
EN

Stack Overflow用户
提问于 2018-08-01 13:51:19
回答 2查看 1.4K关注 0票数 1

我正在编写VBA代码,以便将图表从excel复制到PowerPoint。我的代码将首先从PowerPoint幻灯片中删除现有图表,然后从excel复制粘贴图表。

不幸的是,一些图表在PowerPoint中被命名为“内容占位符xx”,因为在表示中的现有图表不会被删除。既然内容占位符可以是表格/现成的形状/chart,那么我如何测试内容占位符是图表还是其他形状呢?

如有任何指导,将不胜感激。

代码语言:javascript
复制
Sub Powerpoint_Slide_MoveChart()

    '// General declaration
    Dim ppt             As PowerPoint.Application
    Dim ActiveSlide     As PowerPoint.Slide
    Dim Cht             As ChartObject
    Dim i               As Integer

    '// Set powerpoint application
    Set ppt = GetObject(, "PowerPoint.Application")

    '// Check if more then single powerpoint open
    If ppt.Presentations.Count > 1 Then
        MsgBox "Please close all other powerpoints except the one you would like to puiblish."
        Exit Sub
    End If

    '// Set active slide as slide 9
    Set ActiveSlide = ppt.ActivePresentation.Slides(9)
    ppt.ActiveWindow.View.GotoSlide (9)
    Set Cht = ActiveSheet.ChartObjects("ChartSlide9")

    '// Delete existing chart
    For i = 1 To ActiveSlide.Shapes.Count
        If Left(UCase(ActiveSlide.Shapes(i).Name), 5) = "CHART" Then
            ActiveSlide.Shapes(i).Delete
            Exit For
        End If
    Next i
 End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-01 14:39:11

您可以使用形状对象的HasChart属性测试形状是否包含图表.

代码语言:javascript
复制
If ActiveSlide.Shapes(i).HasChart Then

如果您还想测试图表的名称,在测试形状是否有图表之后.

代码语言:javascript
复制
If ActiveSlide.Shapes(i).Chart.Name = "Chart Name" Then
票数 2
EN

Stack Overflow用户

发布于 2018-08-01 14:44:36

使用Shapes.Chart属性

代码语言:javascript
复制
Sub Sample()
    Dim chrt As Chart

    With ActivePresentation
        For i = 1 To .Slides(1).Shapes.Count
            On Error Resume Next
            Set chrt = .Slides(1).Shapes(i).Chart
            On Error GoTo 0

            If Not chrt Is Nothing Then
                MsgBox "Guess what? " & .Slides(1).Shapes(i).Name & " is a chart"
                Set chrt = Nothing
            Else
                MsgBox .Slides(1).Shapes(i).Name & " is not a chart"
            End If
        Next i
    End With
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51635075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档