Como posso fazer slides do PowerPoint para o Excel cada intervalo no VBA

0

Como posso criar slides de ponto de energia com base no intervalo do Excel A2: B2. Todos os caracteres (nome do país) do Excel rowA1 a A10 fazem dele um Slide de Ponto de Poder.

Aqui está o meu código na macro do Excel, mas estou recebendo um erro para a matriz ..

 Sub PasteMultipleSlides()
 Dim myPresentation As Object
 Dim mySlide As Object
 Dim PowerPointApp As Object
 Dim shp As Object
 Dim MySlideArray As Variant
 Dim MyRangeArray As Variant
 Dim x As Long

 On Error Resume Next


 Set PowerPointApp = GetObject(class:="PowerPoint.Application")

'Clear the error between errors
 Err.Clear

 'If PowerPoint is not already open then Exit
  If PowerPointApp Is Nothing Then
   MsgBox "PowerPoint Presentation is not open, aborting."
    Exit Sub
    End If

   'Handle if the PowerPoint Application is not found
    If Err.Number = 429 Then
     MsgBox "PowerPoint could not be found, aborting."
     Exit Sub
      End If

       On Error GoTo 0

       'Make PowerPoint Visible and Active
        PowerPointApp.ActiveWindow.Panes(2).Activate

         'Create a New Presentation
         Set myPresentation = PowerPointApp.ActivePresentation

     'List of PPT Slides to Paste to
      MySlideArray = Array(2, 3, 4, 5, 6)

    'List of Excel Ranges to Copy from
     MyRangeArray = Array(Sheet1.Range("A2:B10"))

     '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

 'Center Object
  With myPresentation.PageSetup
    shp.Left = (.SlideWidth \ 2) - (shp.Width \ 2)
    shp.Top = (.SlideHeight \ 2) - (shp.Height \ 2)
  End With

 Next x

 'Transfer Complete
 Application.CutCopyMode = False
 ThisWorkbook.Activate
 MsgBox "Complete!"

End Sub
    
por user3713336 03.08.2016 / 04:53

1 resposta

1

Você pode ter mais de um erro, mas parece que deve mudar a maneira como cria seu MyRangeArray.

Declare-o como matriz não alocada

Dim MyRangeArray() As Variant

Não há necessidade de usar a função Array para convertê-lo via Array ()

MyRangeArray = Range("A1:A10")

Agora, MyRangeArray é dimensionado automaticamente como MyRangeArray(1 to 10, 1 To 1)

    
por 05.08.2016 / 06:39

Tags