我正在尝试将一系列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?
谢谢!
答案 0 :(得分:1)
这应该这样做:
只需确保在Excel中加载PowerPoint库。
工具 - >参考 - >" Microsoft PowerPoint nn.n对象库"
我还假设Table3
,ChartStart
,ChartEnd
& 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: