Come posso creare diapositive PowerPoint per eccellere in ogni intervallo in VBA


0

Come posso creare diapositive power point basate su Excel Range A2: B2. Tutti i personaggi (countryname) per la riga Excel da A1 a A10 lo rendono un Power Point Slide.

Ecco il mio codice nella macro di Excel ma sto ricevendo un errore per l'array ..

 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

1
Quale messaggio di errore? Quale linea?
dbmitch,

Risposte:


1

Potresti avere più di un errore ma sembra che dovresti cambiare il modo in cui crei MyRangeArray.

Dichiararlo come array non allocato

Dim MyRangeArray() As Variant

Non è necessario utilizzare la funzione Array per convertirla tramite Array ()

MyRangeArray = Range("A1:A10")

Ora, MyRangeArray viene automaticamente dimensionato come MyRangeArray(1 to 10, 1 To 1)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.