Как запустить цикл по списку переменных для вставки в PowerPoint? - PullRequest
0 голосов
/ 13 июня 2019

Я делаю макрос для вставки определенных диапазонов из книг Excel в PowerPoint, и я хочу, чтобы пользователь мог контролировать положение и масштаб изображения.Я написал код, который включает в себя 14 переменных для слайдов в каждой книге, и я пытаюсь запустить цикл for, чтобы он работал быстрее / и код был более плавным.

Как показано ниже, мои переменные(начиная только с 1) я повторяю снова и снова, пока не доберусь до 14. Есть ли способ запустить цикл for, поэтому я могу разрешить только этот блок кода ниже, не вставляя его 14 раз?

'---------- Page ----------
If Switch1 = "Yes" Then
  MySlideArray = Array(Page1)
'Period-Specific SnapShot
'List of PPT Slides to Paste to
'List of Excel Ranges to Copy from
    MyRangeArray = Array(Worksheets(MS1).Range(Rng1))

'Loop through Array data
  For x = LBound(MySlideArray) To UBound(MySlideArray)
    'Copy Excel Range
        MyRangeArray(x).Copy

    'Paste to PowerPoint and position
      On Error Resume Next
        Set shp = myPresentation.Slides(MySlideArray(x)).Shapes.PasteSpecial(DataType:=2) 'Excel 2007-2010
        Set shp = PowerPointApp.ActiveWindow.Selection.ShapeRange 'Excel 2013
      On Error GoTo 0

    'Custom sizing
      With myPresentation.PageSetup
        PowerPointApp.ActiveWindow.Selection.ShapeRange.LockAspectRatio = False
        shp.Width = w1 * 72
        shp.Height = h1 * 72
        'shp.Width = 159
        'shp.Height = 248

 'switch for USER to allow customer positioning or default center image in ppt
            If stc1 = "Yes" Then

                shp.Left = (.SlideWidth \ 2) - (shp.Width \ 2)
                shp.Top = (.SlideHeight \ 2) - (shp.Height \ 2)

                Else

                shp.Left = Hz1 * 72
                shp.Top = Vr1 * 72

            End If

        End With

  Next x

End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...