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")
请尝试使用'.Windows(1).View.paste'或'.Windows(1).View.pastespecial ....'而不是'... ExecuteMso ...'。它会改善什么吗?但是也可以用'DoEvents'来检查它。 –
感谢您的帮助。使用pastespecial,DoEvents并将我的工作表声明为对象似乎有诀窍! – John
当然,这是可以接受的,正是我所需要的。尽管现在我陷入了另一个问题。我使用.Application.CommandBars.ExecuteMso(“PasteSourceFormatting”)的原因是因为它保持我的源格式。 PasteSpecial似乎并没有保留我所有的图表对象的原始格式。有没有办法调用它,以便它与ExecuteMso一样? – John