将Excel表复制到PowerPoint(2010)的最佳方法?

时间:2014-08-28 21:30:27

标签: excel vba excel-vba powerpoint powerpoint-vba

我正在尝试将一系列Excel表格导入PowerPoint并在Office 2013中成功创建了一个宏,但我正在尝试将其调整为Office 2010。

问题在于将表格粘贴到PowerPoint时,Office 2010似乎需要一个唯一/不同的代码。

原来我有:

'Copying Tables to PowerPoint
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide

For i = 0 To Table3
    Sheets("Charts").Range(ChartStart, ChartEnd).Offset(i * Row2, 0).Copy
    Set PPSlide = PPPres.Slides(1)
    Set PPShape = PPSlide.Shapes.Paste
    PPShape.Name = "Table" & i

但是从那时起被告知2010版本的修复是使用.PasteSpecial所以我有:

'Copying Tables to PowerPoint
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide

For i = 0 To Table3
    Sheets("Charts").Range(ChartStart, ChartEnd).Offset(i * Row2, 0).Copy
    Set PPSlide = PPPres.Slides(1)
    Set PPShape = PPSlide.Shapes.PasteSpecial(dataType:=10)
    PPShape.Name = "Table" & i

事情是使用DataType:= 10将图表以不正确的格式放入PowerPoint中以用于我的目的。我需要使用ppPasteHTML将表格作为表格进入PowerPoint,但是,当我尝试将其输入到PasteSpecial函数中时,我得到一个错误代码,说明剪辑板是空的。

有没有人知道“ppPasteHTML”是否具有PasteSpecial中DataType选项的数字等效项?或者将Excel表格作为Office 2010表格的另一种方式进入PowerPoint?

谢谢!

2 个答案:

答案 0 :(得分:1)

这应该这样做:

只需确保在Excel中加载PowerPoint库。

工具 - >参考 - >" Microsoft PowerPoint nn.n对象库"

我还假设Table3ChartStartChartEnd& Row2已设置值

Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide

'Open PowerPoint and create a new presentation.
Set pptApp = New PowerPoint.Application
Set pptPres = pptApp.Presentations.Add

Set pptSlide = pptPres.Slides.Add(1, ppLayoutBlank)

For i = 0 To Table3
Set objRange = Worksheets("Charts").Range(ChartStart, ChartEnd).Offset(i * Row2, 0)
objRange.Copy
pptSlide.Shapes.PasteSpecial DataType:=ppPasteHTML, Link:=msoFalse
Next i

For j = 1 To pptSlide.Shapes.Count
    With pptSlide.Shapes(j)
    .Name = "Table" & j
    End With
Next j

Set pptSlide = Nothing
Set pptPres = Nothing
Set pptApp = Nothing

答案 1 :(得分:0)

ppPasteHtml的长/数字等效值为8。您可以通过在PowerPoint中打开VBE,在立即窗口中执行?ppPasteHTML或在模块/例程中执行Debug.Print ppPasteHtml来自行查询。

使用早期绑定,请尝试:

pptSlide.Shapes.PasteSpecialy DataType:=ppPasteHtml

或者,使用后期绑定:

pptSlide.Shapes.PasteSpecial DataType:=8

或者,我看过一些other q's where people have problems pasting from one application to another application(例如,从Excel到PowerPoint等)。在这些情况下,似乎有时解决的唯一方法是使用CommandBars对象,但是我不确定CommandBars是否有“HTML”粘贴方法。

pptSlide.Parent.ExecuteMso "PasteExcelTableSourceFormatting"

以下是您可以使用的其他一些可能的MSO命令,但就像我说的那样我看不到粘贴HTML的命令,尽管此列表适用于Office 2010:

enter image description here