如何在新实例中打开一个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对象进行早期绑定。
逻辑:
- 获取具有
Chart
对象的形状 - 获取您的
Chart
对象,然后获取Chartdata
- 启动图表并设置您的工作簿和Excel应用程序对象
假设:
为了演示目的,我假设如下
- 演示文稿中的
Slide1
有一个graphics - 我已经添加了两种情况。 即
Automating Excel from PowerPoint
和Automating 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