【发布时间】: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