无法将形状从Word导入PowerPoint 2013;适用于Office 2010

时间:2014-08-15 19:54:43

标签: vba ms-word powerpoint copy-paste powerpoint-vba

我正在编写一个PowerPoint宏,用于打开Word文档,并将文档中的每张图片导入到自己的幻灯片中。因为我不能直接在Word中放置Word InlineShape对象,显然,我正在使用剪贴板。相关代码是:

Dim wdApp As Object
Dim SourceDoc As Document
Dim TargetSlide As Slide
Dim Figures As Word.InlineShapes
Dim Figure As Word.InlineShape
Dim TargetShapeRange As ShapeRange

Set wdApp = CreateObject("Word.Application")
Set SourceDoc = wdApp.Documents.Open(FileName:=PathToFile, ReadOnly:=True)
Set Figures = SourceDoc.InlineShapes

For Each Figure In Figures
    Figure.Range.Select
    Figure.Application.Selection.Copy
    Set TargetSlide = ActivePresentation.Slides.AddSlide(ActivePresentation.Slides.Count + 1, _
      ActivePresentation.SlideMaster.CustomLayouts(6))
    Set TargetShapeRange = TargetSlide.Shapes.Paste
Next Figure

使用PowerPoint 2010和Word 2010,这非常有效。在PowerPoint 2013中(安装了Word 2013,并引用了Microsoft Word 15.0对象库而不是14.0),Set TargetShapeRange = TargetSlide.Shapes.Paste行给出了运行时错误'-2147188160(80048240)':

形状(未知成员):无效的请求。剪贴板为空或包含可能未在此处粘贴的数据。

我尝试在CopyCopyAsPicture对象上使用SelectionRange方法。我尝试过使用Shapes.PasteSpecial命令。我已经尝试了几种不同的方式来访问Word Application对象。什么都行不通。

值得注意的是,如果我修改代码以复制除图片之外的文本的前一段,则脚本可以工作 - 它检索文本,但不检索图片。

1 个答案:

答案 0 :(得分:0)

我知道这个问题已经差不多两年了,但我在发现类似问题之后通过谷歌发现了这个问题,所以我会在这里发布。

尝试

Figure.Application.ActiveWindow.ScrollIntoView Selection.Range, True
在复制之前

即使屏幕更新已禁用或应用程序不可见,它也适用于我。