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

Vba 将Excel表格复制到PowerPoint(2010)的最佳方法?,vba,excel,powerpoint,Vba,Excel,Powerpoint,我正在尝试将一系列Excel表格导入PowerPoint,并在Office 2013中成功地为此创建了一个宏,但我正在尝试使其适应Office 2010 问题是,将表格粘贴到PowerPoint时,Office 2010似乎需要一个唯一/不同的代码 最初我有: 'Copying Tables to PowerPoint Set PPApp = GetObject(, "Powerpoint.Application") Set PPPres = PPApp.ActivePresentation P

我正在尝试将一系列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版本的修复程序。因此我:

'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
问题是使用数据类型:=10将图表以不正确的格式放入PowerPoint,以供我参考。我需要使用ppPasteHTML将表格作为表格输入PowerPoint,但是,当我尝试将其输入PasteSpecial函数时,我会收到一个错误代码,表示剪贴板为空

是否有人知道“ppPasteHTML”在PasteSpecial中的数据类型选项是否有一个数字等效项?或者是否有另一种方法将Excel表格作为Office 2010表格输入PowerPoint

谢谢!

这应该可以做到:

只需确保您正在Excel中加载PowerPoint库

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

我还假设
表3
图表开始
图表结束
&
第2行
具有设置值

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

ppPasteHtml
的长/数字等效项是
8
。您可以在PowerPoint中打开VBE,在即时窗口中执行
?ppPasteHtml
,或在模块/例程中执行
调试.Print ppPasteHtml
,自行查询此项

使用早期绑定,请尝试:

pptSlide.Shapes.PasteSpecialy DataType:=ppPasteHtml
或者,使用后期绑定:

pptSlide.Shapes.PasteSpecial DataType:=8
或者,我也看到了一些(例如,从Excel到PowerPoint等)在这些情况下,似乎有时唯一的解决方法是使用
CommandBars
对象,但是我不确定CommandBars中是否有“HTML”粘贴方法

pptSlide.Parent.ExecuteMso "PasteExcelTableSourceFormatting"
下面是一些其他可能的MSO命令,您可以使用,但正如我所说,我没有看到一个显示为粘贴HTML的命令,尽管此列表适用于Office 2010:


可能重复的问题您真的不应该在一天内问同一个问题两次……我关闭了另一个问题,因为它没有任何答案。您可以继续这个问题