![](/img/trans.png)
[英]VBA - How to select specific charts in excel and paste them on single slide in power point
[英]VBA: Positioning 3 Graphs On A Single Power Point Slide
我有 VBA 脚本,可将 3 个图形导出到我创建的现有 powerpoint 模板中的单个幻灯片的正文中。 我的问题是我不确定如何正确定位这些图形,以便它们并排放置。 我一直在想办法解决这个问题,并且我一直在尝试制定一个 For 语句,以增加每个图形的图形位置。
我最近的尝试:
On Error Resume Next
Set PowerPointApp = GetObject(class:="PowerPoint.Application")
If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application")
On Error GoTo 0
Application.ScreenUpdating = False
Set myPresentation = PowerPointApp.Presentations.Open(Filename:="X:\xxx\yyy.pptx")
'For i = 1 To Worksheets("Graphs").ChartObjects.Count
'Set cht = Worksheets("Graphs").ChartObjects(i)
MySlideArrayc = Array(12)
MyRangeArrayc = Array(Worksheets("Graphs").ChartObjects("A"), Worksheets("Graphs").ChartObjects("B"), Worksheets("Graphs").ChartObjects("CC"))
For xc = LBound(MySlideArrayc) To UBound(MySlideArrayc)
'Copy Excel Range
MyRangeArrayb(xc).CopyPicture
Set shpc = myPresentation.Slides(MySlideArrayc(xc)).Shapes.Paste
Next
Next xc
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Left = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Top = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Left = 150
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Top = 150
Else
myPresentation.Slides(Worksheets("Graphs").ChartObjects("CC")).ShapeRange.Left = 300
myPresentation.Slides(Worksheets("Graphs").ChartObjects("CC")).ShapeRange.Top = 300
End If
End Sub
对于一个在另一个之上,请尝试下一种方法:
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Left = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Top = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Left = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Top = 50 + _
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Height
myPresentation.Slides(Worksheets("Graphs").ChartObjects("CC")).ShapeRange.Left = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("CC")).ShapeRange.Top = 50 + _
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Height + _
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Height
对于靠近另一个的,请尝试下一种方法:
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Left = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Top = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Left = 50 + _
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Width
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Top = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("CC")).ShapeRange.Top = 50
myPresentation.Slides(Worksheets("Graphs").ChartObjects("CC")).ShapeRange.Left = 50 + _
myPresentation.Slides(Worksheets("Graphs").ChartObjects("A")).ShapeRange.Width + _
myPresentation.Slides(Worksheets("Graphs").ChartObjects("B")).ShapeRange.Width
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.