如何在新实例中打开一个PowerPoint后台工作表

我正在使用vba更新PowerPoint演示文稿。 在ppt中有30个图表,我将把一些excel表格中的数据应用到powerpoint图表的后端excel表格中。 但是每次我都可以看到新的Excel表格在任务栏中打开。 即使他们不显示在整个屏幕上

Set CExcel = New Excel.Application CExcel.Visible = False Set CWB2 = CExcel.Workbooks.Open(PPPres.Slides(lngSldNo).Shape(strChartName).Chart.ChartData.Workbook) 

这是我正在使用的代码,但它给我的错误,你不能打开这样的文件,你可以告诉我如何在新的实例中打开PowerPoint后台工作表,而不显示文件和它的标签也

提前致谢

Workbooks.Open方法的第一个参数是一个包含文件path的string,例如

 Sub Test() Dim EAPP As Excel.Application, EWB As Excel.Workbook Set EAPP = New Excel.Application Set EWB = EAPP.Workbooks.Open("C:\Users\Myself\Desktop\MyFile.xlsx") Set EWB = Nothing Set EAPP = Nothing End Sub 

不确定这是由你的论点交付。 Application.Visible属性默认是False ,所以不需要明确设置它。 我想你已经创build了一个Excel对象库的引用,以利用Powerpoint中的Excel对象进行早期绑定。

逻辑:

  1. 获取具有Chart对象的形状
  2. 获取您的Chart对象,然后获取Chartdata
  3. 启动图表并设置您的工作簿和Excel应用程序对象

假设:

为了演示目的,我假设如下

  1. 演示文稿中的Slide1有一个graphics
  2. 我已经添加了两种情况。 即Automating Excel from PowerPointAutomating PowerPoint from Excel

这是你正在尝试?

代码:从PowerPoint自动化Excel

 Option Explicit Sub Sample() '~~> Excel Objects Dim oXlApp As Object, oXlWb As Object, oXlSheet As Object '~~~> Powerpoint objects Dim oPPChart As Chart Dim oPPChartData As ChartData '~~> Working with shape1 With ActivePresentation.Slides(1).Shapes(1) If .HasChart Then Set oPPChart = .Chart Set oPPChartData = oPPChart.ChartData oPPChartData.Activate '~~> Set your Excel objects here Set oXlWb = oPPChartData.Workbook Set oXlApp = oXlWb.Parent oXlApp.Visible = False Debug.Print oXlApp.Name Debug.Print oXlWb.Name ' '~~> Rest of your code ' End If End With '~~> Close And Cleanup oXlWb.Close False oXlApp.Quit Set oXlSheet = Nothing Set oXlWb = Nothing Set oXlApp = Nothing End Sub 

代码:从Excel中自动执行PowerPoint

 Option Explicit Sub Sample() '~~> Excel Objects Dim oXlApp As Application, oXlWb As Workbook, oXlSheet As Worksheet '~~~> Powerpoint objects Dim oPPApp As Object, oPPprsn As Object, oPPSlide As Object Dim oPPChart As Object, oPPChartData As Object Application.ScreenUpdating = False '~~> Establish a Popwerpoint application object On Error Resume Next Set oPPApp = GetObject(, "PowerPoint.Application") '~~> If not found then create new instance If Err.Number <> 0 Then Set oPPApp = CreateObject("PowerPoint.Application") End If Err.Clear On Error GoTo 0 '~~> open relevant powerpoint file Set oPPprsn = oPPApp.Presentations.Open("C:\Presentation1.pptx") Set oPPSlide = oPPprsn.Slides(1) '~~> Working with shape1 With oPPSlide.Shapes(1) If .HasChart Then Set oPPChart = .Chart Set oPPChartData = oPPChart.ChartData oPPChartData.Activate '~~> Set your Excel objects here Set oXlWb = oPPChartData.Workbook Set oXlApp = oXlWb.Parent '~~> This is required if powerpoint chartdata '~~> opens in the same instance of this excel oXlWb.Windows(1).Visible = False 'oXlApp.Visible = False Debug.Print oXlApp.Name Debug.Print oXlWb.Name ' '~~> Rest of your code ' End If End With oXlWb.Windows(1).Visible = True '~~> Close And Cleanup oXlWb.Close False oPPprsn.Close oPPApp.Quit Application.ScreenUpdating = True Set oPPChartData = Nothing Set oPPChart = Nothing Set oPPChartData = Nothing Set oPPSlide = Nothing Set oPPprsn = Nothing Set oPPApp = Nothing End Sub