繁体   English   中英

VBA:在单个 Power Point 幻灯片上定位 3 个图形

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM