丽贝卡·伯奇(Rebecca Birch)的一些客户要求在PowerPoint中向他们提供所有报告。这是一项艰巨的任务,因为这些报表的所有源数据仅在Excel中可用。丽贝卡(Rebecca)一直在寻找想法,以使从一种转换为另一种的负担变得更加轻松-可能是通过获取工作表数据的“快照”并将其放入PowerPoint幻灯片中。

如果不需要那么多快照,一种解决方案是简单地手动进行粘贴。您可以在Excel中显示信息,然后按PrintScreen键将其图片放在Office剪贴板中。切换到PowerPoint,然后从“编辑”菜单中选择“ Office剪贴板”。然后,您可以查看剪贴板的内容,然后选择要粘贴到当前幻灯片中的内容。

一种不太重复的方法是将数据从Excel工作簿链接到幻灯片。您可以使用编辑|选择性粘贴(在PowerPoint中)以粘贴链接的数据。这样,只要工作簿中的数据被更新,链接的幻灯片也将被更新。正确完成后,此解决方案可以只需要粘贴一次即可。

如果您喜欢采用开发宏的方法进行粘贴,请在Jon Peltier的网站上查看其开发的内容:

http://peltiertech.com/Excel/XL_PPT.html#rangeppt

它将为选定的任何单元格拍摄快照,然后将其粘贴到PowerPoint中的活动幻灯片中。 (显然,您必须同时打开Excel和PowerPoint才能使用该宏。)

此外,可以相对容易地修改宏,以便在Excel中逐步浏览一系列命名范围,并将这些范围的内容粘贴到PowerPoint中的指定幻灯片中。

另一个基于宏的解决方案是(在Excel中)创建一个新的PowerPoint演示文稿,其中将包含当前Excel工作簿中每个工作表的快照。以下宏可完成此任务:

Sub CopyWksToPPT()

Dim pptApp As Object     Dim sTemplatePPt As String     Dim wks As Worksheet     Dim sTargetTop As Single     Dim sTargetLeft As Single     Dim sTargetWidth As Single     Dim sTargetHeight As Single     Dim sScaleHeight As Single     Dim sScaleWidth As Single     Dim iIndex As Integer

'Change these as desired     sTargetTop = 30     sTargetLeft = 60     sTargetWidth = 600     sTargetHeight = 450     sTemplatePPt = "C:\Program Files\Microsoft Office\Templates\Blank Presentation.pot"



iIndex = 1     Set pptApp = CreateObject("Powerpoint.Application")

With pptApp         .Visible = True         .Presentations.Open _             FileName:=sTemplatePPt, Untitled:=msoTrue         For Each wks In Worksheets             wks.Select             .ActiveWindow.View.GotoSlide _                 Index:=.ActivePresentation.Slides.Add _                 (Index:=iIndex, Layout:=12).SlideIndex             iIndex = iIndex + 1             wks.UsedRange.Copy             .ActiveWindow.View.Paste             With .ActiveWindow.Selection.ShapeRange                 sScaleHeight = sTargetHeight / .Height                 sScaleWidth = sTargetWidth / .Width                 If sScaleHeight < sScaleWidth Then                     sScaleWidth = sScaleHeight                 Else                     sScaleHeight = sScaleWidth                 End If                 .ScaleHeight sScaleHeight, 0, 2                 .ScaleWidth sScaleWidth, 0, 2                 .Top = sTargetTop + (sTargetHeight - .Height) / 2                 .Left = sTargetLeft + (sTargetWidth - .Width) / 2             End With         Next         .Visible = True     End With End Sub

注意该区域显示“根据需要更改它们”。它包含粘贴的快照在每个PowerPoint幻灯片中的位置以及其高度和宽度的规范。 sTemplatePPt变量中还包括用于新PowerPoint演示文稿的模板的完整路径。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2378)适用于Microsoft Excel 97、2000、2002和2003。