Cole um gráfico do Excel em um espaço reservado específico em um layout específico. Powepoint 2010
Eu preciso colar vários gráficos do excel para powerpoint. Eu encontrei um excelente código VBA (principalmente no site de Jon Peltier). Agora, meu modelo de powerpoint tem vários layouts (por exemplo, com um gráfico ocupando a maioria dos slides ou um gráfico e uma caixa de texto em um slide, etc etc).
O que eu quero é que o gráfico se torne parte do layout dos slides para que eu reformate o slide - por exemplo, Eu mudo o layout como no exemplo dado acima - o gráfico se moverá de acordo. Atualmente, posso colar no local onde está o espaço reservado, com o tamanho certo e tudo, mas não está no espaço reservado, está no espaço reservado (e, portanto, fica lá se eu alterar o layout).
Idealmente, eu gostaria de poder escolher o layout (a partir de 15) e escolher o espaço reservado no layout selecionado (normalmente eu tenho um título, um rodapé e, em seguida, de 1 a 4 espaços reservados para gráficos, imagens, texto ou todos os acima).
Eu não sou um programador de VBA, apenas uso um pouco de lógica e pegue códigos que são gentilmente compartilhados na rede. Eu não tenho idéia de como identificar o layout adequado (eles têm nomes, mas é a variável?), Nem o espaço reservado adequado dentro do layout (aqui eu nem sei como identificá-los).
Qualquer ajuda muito apreciada. DF
A seguir, o código que copiei aqui e ali (principalmente o site de Jon Peltier).
Sub ChartToPresentation()
' Set a VBE reference to Microsoft PowerPoint Object Library
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim AddSlidesToEnd As Boolean
AddSlidesToEnd = True
' Make sure a chart is selected
If ActiveChart Is Nothing Then
MsgBox "Please select a chart and try again.", vbExclamation, _
"No Chart Selected"
Else
' Reference existing instance of PowerPoint
Set PPApp = GetObject(, "Powerpoint.Application")
' Reference active presentation
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide
' Reference active slide
Set PPSlide = PPPres.Slides _
(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
' Copy chart
ActiveChart.ChartArea.Copy
' Paste chart
PPSlide.Shapes.Paste.Select
' Position pasted chart
' This is the keypoint
' I want to replace this with the selection of appropriate layout
' and placeholder in that layout
PPApp.ActiveWindow.Selection.ShapeRange.Left = 19.56
PPApp.ActiveWindow.Selection.ShapeRange.Top = 66.33
PPApp.ActiveWindow.Selection.ShapeRange.Width = 366.8
PPApp.ActiveWindow.Selection.ShapeRange.Height = 424.62
If PPApp.ActivePresentation.Slides.Count = 0 Then
' Other key point
' can I add a specific layout, for example one named Two Content Layout + takeout
Set PPSlide = PPApp.ActivePresentation.Slides.Add(1, ppLayoutBlank)
Else
If AddSlidesToEnd Then
'Appends slides to end of presentation and makes last slide active
PPApp.ActivePresentation.Slides.Add PPApp.ActivePresentation.Slides.Count + 1, ppLayoutBlank
PPApp.ActiveWindow.View.GotoSlide PPApp.ActivePresentation.Slides.Count
Set PPSlide = PPApp.ActivePresentation.Slides(PPApp.ActivePresentation.Slides.Count)
Else
'Sets current slide to active slide
Set PPSlide = PPApp.ActiveWindow.View.Slide
End If
End If
'Clean up
Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing
End If
End Sub