【问题标题】:How to handle Powerpoint chart from Excel如何处理 Excel 中的 Powerpoint 图表
【发布时间】:2015-03-29 21:18:15
【问题描述】:

我在第二张幻灯片中有一个 PowerPoint 文件和一个图表。 在 Excel 文件中编写宏时,我无法设置图表的高度和宽度。下面是我正在尝试的代码。请注意,我只需要从 Excel 宏中修改高度和宽度。

Sub controlPPT()
    Dim PPT As Object
    Set PPT = CreateObject("PowerPoint.Application")     
    With Application.FileDialog(1)
        .AllowMultiSelect = False
        .Show
        .Filters.Clear
        .Filters.Add "PPT files", "*.pptx"
        .FilterIndex = 1
        If .SelectedItems.Count > 0 Then
            Set slideTwo = PPT.ActivePresentation.Slides(2)
            slideTwo.Shapes(1).Chart.PlotArea.Height = 120
            slideTwo.Shapes(1).Chart.PlotArea.Width = 200
            slideTwo.Shapes(1).Chart.PlotArea.Left = 0
            slideTwo.Shapes(1).Chart.PlotArea.Top = 0
        End If
    End With
End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    主要问题是Application.FileDialog 没有打开选定的文件,你应该明确地打开它:

    Sub controlPPT()
        Dim pptApp As Object
        Dim pres As Object
        Dim slideTwo As Object
    
        Set pptApp = CreateObject("PowerPoint.Application")
    
        With Application.FileDialog(1)
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add "PPT files", "*.pptx"
            .FilterIndex = 1
            .Show
            If .SelectedItems.Count > 0 Then
                Set pres = pptApp.Presentations.Open(.SelectedItems(1))
                Set slideTwo = pres.Slides(2)
                slideTwo.Select
                With slideTwo.Shapes(1).Chart.PlotArea
                    .Height = 120
                    .Width = 200
                    .Left = 0
                    .Top = 0
                End With
            End If
        End With
    
        'save/close presentation
        pres.Save
        pres.Close
        'clean up
        Set pres = Nothing
        pptApp.Quit
        Set pptApp = Nothing
    End Sub
    

    为了可靠性,我会将slideTwo.Shapes(1) 更改为slideTwo.Shapes("Chart1"),其中“Chart1”应替换为实际图表名称。

    【讨论】:

    • 我的代码可以打开 ppt 文件,除了上面提到的之外,我可以在 ppt 中进行各种更改
    • 您的代码采用 currently active 演示文稿Set slideTwo = PPT.ActivePresentation.Slides(2)(已打开),但不是您使用 FileDialog 选择的那个。顺便说一句,你试过运行我的代码吗?
    • 对不起,我正在使用以下代码打开文件 PPT.Presentations.Open .SelectedItems(1)
    • 好的,没问题,在修改图表之前,你应该把它放在哪里:slideTwo.Select(见我的代码)
    • 你太棒了,我从昨天开始一直在寻找解决方案....slideTwo.Select 工作得很好。非常感谢,您的帮助很大。
    猜你喜欢
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2016-11-29
    相关资源
    最近更新 更多