Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:在单个电源点幻灯片上定位3个图形_Excel_Vba_Powerpoint - Fatal编程技术网

Excel VBA:在单个电源点幻灯片上定位3个图形

Excel VBA:在单个电源点幻灯片上定位3个图形,excel,vba,powerpoint,Excel,Vba,Powerpoint,我有一个VBA脚本,可以将3个图形导出到我创建的现有powerpoint模板中的一张幻灯片的主体中。我的问题是,我不确定如何正确定位这些图形,使它们并排排列。我一直在想一种方法,我可以这样做,我一直在努力制定一个For语句,增加每个图形的位置 我最近的尝试: On Error Resume Next Set PowerPointApp = GetObject(class:="PowerPoint.Application") If PowerPointApp I

我有一个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

如果一个靠近另一个,请尝试下一种方法:

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


你能更好地解释一下“肩并肩”是什么意思吗?它们应该是一个挨着另一个,一个在另一个上面吗?如果没有上述任何一种定位,请更好地解释其含义。对不起,是的,我希望它们水平相邻,而不是一个在另一个之上。然后,尝试我在回答中的建议。