Мне нужно вставить несколько диаграмм из excel в powerpoint. Я нашел отличный код VBA (в основном на сайте Джона Пельтье). Теперь мой шаблон powerpoint имеет несколько макетов (например, с 1 диаграммой, занимающей большую часть слайдов или 1 диаграмму и одно текстовое поле на слайде и т. Д. И т. Д.).Вставьте диаграмму из Excel в конкретный заполнитель в определенном макете. Powepoint 2010
Я хочу, чтобы диаграмма стала частью макета слайда, так что если я переформатирую слайд - например, Я меняю макет, как в приведенном выше примере - график будет двигаться соответственно. В настоящее время я могу вставить в место, где находится местозаполнитель, с правильным размером и всем, но он не находится в заполнитель, он находится на заполнитель (и поэтому он остается там, если я меняю макет).
В идеале я хотел бы иметь возможность выбрать макет (с 15) и выбрать местозаполнитель в выбранном макете (как правило, у меня есть заголовок, нижний колонтитул, а затем от 1 до 4 заполнителей для диаграмм, изображений, текста или все, что выше).
Я не программист VBA, я просто использую немного логики и кодов захвата, которые любезно передаются в сети. Я не знаю, как определить правильную компоновку (у них есть имена, но это переменная?), Ни надлежащий заполнитель в макете (здесь я даже не знаю, как их идентифицировать).
Любая помощь очень ценится. DF
В следующем коде, который я копировал здесь и там (в основном, сайт Джона Пельтье).
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
Все проблемы являются локальными для тех, кто нуждается в их решении и не имеет значение для тех, кто этого не делает. Я тоже хотел бы знать ответ на этот вопрос, уже потратив немного времени, пытаясь понять это. Спасибо, Сиддхарт, за исправление. FWIW, я попробовал в основном то же самое, выбрав перед вставкой, но сделал прямую пасту, а не пастовую. Не работает. –