2014-01-24 75 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)複製和粘貼之間的命令實際上是解決方案。

相關問題