我正在编写一个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)':
形状(未知成员):无效的请求。剪贴板为空或包含可能未在此处粘贴的数据。
我尝试在Copy
和CopyAsPicture
对象上使用Selection
和Range
方法。我尝试过使用Shapes.PasteSpecial
命令。我已经尝试了几种不同的方式来访问Word Application对象。什么都行不通。
值得注意的是,如果我修改代码以复制除图片之外的文本的前一段,则脚本可以工作 - 它检索文本,但不检索图片。
答案 0 :(得分:0)
我知道这个问题已经差不多两年了,但我在发现类似问题之后通过谷歌发现了这个问题,所以我会在这里发布。
尝试
Figure.Application.ActiveWindow.ScrollIntoView Selection.Range, True
在复制之前即使屏幕更新已禁用或应用程序不可见,它也适用于我。