【问题标题】:How do I close Embedded Excel processes in PowerPoint?如何在 PowerPoint 中关闭嵌入式 Excel 进程?
【发布时间】:2022-12-16 04:17:33
【问题描述】:

我正在使用 VBA 在 Excel 中打开打开的 PowerPoint 图表数据并执行一系列操作,例如隐藏/删除行和列。我正在使用 chart.ChartData.Activate 命令打开 Excel。我过去曾尝试在处理后立即关闭工作簿,使用 Workbook.Close(),所以我让 Excel 保持打开状态。这现在已成为大型演示文稿的问题,它会导致 PowerPoint 崩溃并在恢复模式下重新打开。即使当我恢复 Workbook.Close() 命令时,有时这些 Excel 实例仍然保持打开状态,或者我在例程中失去了它们的作用域。

我正在逐张处理演示文稿,因此我正在寻找一种方法来在处理完每张幻灯片后立即关闭这些打开的实例。

有谁知道如何访问这些挂起的 Excel 进程?我附上了一张照片,以更好地帮助解释他们居住的地方。

我在下面创建了一个示例例程。我在最初设计这个时使用 ChartData.ActivateChartDataWindow 命令而不是 ChartData.Activate b/c,Activate 命令导致整个 Excel 应用程序打开而不是 ChartDataWindow 并且极大地减慢了处理速度并且有时会在一遍又一遍重复时崩溃。

私有子 ClearColumnsInExcel()

'Set the slide
Dim slide As slide
Set slide = pptPres.Slides(1)

'Index through each shape on the slide
Dim shapeX As Integer
For shapeX = 1 To slide.Shapes.Count

    'If this shape has a chart
    If slide.Shapes(shapeX).Type = msoChart Then
    
        'Set the chart
        Dim chart As chart
        Set chart = slide.Shapes(shapeX).chart
        
        'Set the worksheet
        Dim wks As Worksheet
        Set wks = chart.ChartData.Workbook.Worksheets(1)
        
        'Activate the workbook
        chart.ChartData.ActivateChartDataWindow
        
        'Clear target columns
            
        'Remove objects from memomry
        Set wks = Nothing
        Set chart = Nothing
        
    End If
    
Next shapeX
        

结束子

【问题讨论】:

  • 尝试创建一个可能只有一张幻灯片和一个或两个嵌入式 Excel 图表对象的最小 PowerPoint,然后向我们展示您正在使用的使 Excel 进程保持打开状态的代码。如果我们能看到实际的代码逻辑和顺序,我们可以提供更好的帮助。此外,图表是否以某种方式动画化或互动?如果您需要在 Excel 中的数据在 PowerPoint 中显示之前进行更新,从 Excel 中复制图表并将其作为图像粘贴到幻灯片上可能会有所帮助。

标签: excel vba charts powerpoint


【解决方案1】:

我不确定你是如何构建代码的,但你只是关闭了工作簿。要获得期望的结果,您需要退出 excel 应用程序。

我认为这样的事情可以解决问题:

Private Sub testSave()
    Dim xlsApp As Excel.Application
    Dim xlsWbk As Excel.Workbooks

    Set xlsApp = New Excel.Application

    xlsApp.Visible = True
    Set xlswkb = xlsApp.Workbooks.Add 'creating a new wokbook just to test

    'do your thing here

    xlswkb.Close SaveChanges:=False ' close workbook without saving in this 
    example
    xlsApp.Quit ' quitting the excel app

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2018-12-13
    • 2013-02-03
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    相关资源
    最近更新 更多