2014-01-24 39 views
1

我正在使用Excel文档创建PowerPoint演示文稿。在创建每张幻灯片时,我正在从excel文档的工作表复制图表对象。图表不会在第一个之后被复制。如果我在每个图表后都包含一个消息框,它们就是。我已经尝试在这些复制/粘贴以及DoEvents之间加入延迟,并尝试在每次粘贴后清除剪贴板,但似乎没有任何效果。我想知道是否有人能够启发我为什么会发生这种情况?我使用Excel二千零十分之二千零十PP - 这基本上是我使用的每张幻灯片相同的代码..将图表对象从Excel复制到PP不一致结果

'Slide #5 
Set PPSlide = PPPres.Slides.Add(5, ppLayoutTitleOnly) 
Set ttlBox = PPSlide.Shapes("Title 1") 
Worksheets("worksheetname").ChartObjects("Chart 2").Chart.ChartArea.Copy 

With PPPres 
.Windows(1).Activate 
.Windows(1).View.GotoSlide 5 
.Application.CommandBars.ExecuteMso ("PasteSourceFormatting") 
End With 

With PPSlide 
    .Shapes.AddPicture Filename:=imagePath & "outlier.png", LinktoFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=0, Top:=0 
End With 

With ttlBox 
    .Fill.ForeColor.RGB = RGB(0, 0, 128) 
    .Top = 0 
    .Left = 175 
    .Width = 545 
    .Height = 70 
    .TextFrame2.TextRange.Characters.Text = "Losses" 
    .TextFrame2.TextRange.Font.Size = "22" 
    .TextFrame2.TextRange.Characters.Font.Fill.ForeColor.RGB = RGB(255, 255, 255) 
    .TextFrame2.AutoSize = msoAutoSizeTextToFitShape 
End With 

MsgBox ("Hi") 
+0

请尝试使用'.Windows(1).View.paste'或'.Windows(1).View.pastespecial ....'而不是'... ExecuteMso ...'。它会改善什么吗?但是也可以用'DoEvents'来检查它。 –

+0

感谢您的帮助。使用pastespecial,DoEvents并将我的工作表声明为对象似乎有诀窍! – John

+0

当然,这是可以接受的,正是我所需要的。尽管现在我陷入了另一个问题。我使用.Application.CommandBars.ExecuteMso(“PasteSourceFormatting”)的原因是因为它保持我的源格式。 PasteSpecial似乎并没有保留我所有的图表对象的原始格式。有没有办法调用它,以便它与ExecuteMso一样? – John

回答

0

大量的测试不同的解决方案后 - 使用WAIT(1)复制和粘贴之间的命令实际上是解决方案。

相关问题