簡體   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