首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将excel范围作为图片粘贴到ppt中的最佳方法是什么?

将excel范围作为图片粘贴到ppt中的最佳方法是什么?
EN

Stack Overflow用户
提问于 2020-10-07 10:49:55
回答 1查看 215关注 0票数 0

我有一个宏,它打开一个ppt模板文件,并将幻灯片填充到ppt表的内容中,将这些内容粘贴为增强的元数据--非常直接地使用一个条件、复制范围、粘贴特殊的DataType:=2来执行任务过滤枢轴。

问题是,我已经将这个过程作为一个循环来处理,它可以打开ppt模板,用这些图像填充幻灯片,并将其作为副本保存10次(生成10个文件),然后随机得到以下错误:

“运行时错误”-2147188160 (80048240)':

Shapes.PasteSpecial :无效请求。剪贴板是空的,或者包含可能不粘贴在这里的数据。“

现在,这个错误的问题是它不是真的,因为我所要做的就是单击RUN,然后宏就没有问题,而不需要更改任何东西。而且它可以运行几次,没有问题,然后随机抛出一个错误-循环迭代,复制的枢轴表范围和幻灯片数都不一致。

我假设的问题是内存,因此我的问题-是否有更好的方法复制excel范围和粘贴图像到ppt文件?

我现在的代码非常简单:

代码语言:javascript
复制
ws.PivotTables("pivot").TableRange2.Copy
MySlide.Shapes.PasteSpecial DataType:=2

也许这种方法效率低下?更改DataType会有帮助吗?(我认为不是,因为问题在于剪贴板)不幸的是,很难通过excel vba找到控制ppt的材料

EN

回答 1

Stack Overflow用户

发布于 2020-10-07 13:35:58

粘贴时,将对象复制到剪贴板的过程很可能尚未完成。所以它不适合粘贴。

处理这一问题的一种方法可能是设置两个简单的单独例程。一个例程进行复制,另一个例程进行粘贴。

这样做,可能会迫使VBA等到一个进程完成后再转到下一个进程。

这是复制范围的例行程序。

代码语言:javascript
复制
Sub CopyPivotTableRangeToClipboard(ByVal target As Range)
    target.Copy
End Sub

下面是将范围粘贴到幻灯片中的例程..。

代码语言:javascript
复制
Sub PasteRangeIntoSlide(ByVal theSlide As Object)
    theSlide.Shapes.PasteSpecial DataType:=2
End Sub

然后你会按下面的方式调用这些程序。

代码语言:javascript
复制
CopyPivotTableRangeToClipboard ws.PivotTables("pivot").TableRange2

PasteRangeIntoSlide MySlide

编辑

如果将复制和粘贴处理分离到两个单独的过程没有帮助,那么您还可以尝试在每个进程之后暂停宏1、2或3秒,同时调用DoEvents。为此,我们可以使用以下步骤..。

代码语言:javascript
复制
Sub PauseMacro(ByVal seconds_to_wait As Integer)
    Dim start_time As Single
    start_time = Timer
    Do
        DoEvents
    Loop Until Timer - start_time > seconds_to_wait
End Sub

现在你的代码如下..。

代码语言:javascript
复制
CopyPivotTableRangeToClipboard ws.PivotTables("pivot").TableRange2

PauseMacro 3 'seconds to wait (change as desired)

PasteRangeIntoSlide MySlide

PauseMacro 3 'seconds to wait (change as desired)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64242496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档