Bom Dia!
Consegui fazer algumas alterações no código.
Coloquei o endereço do arquivo PowerPoint em uma celula específica, bem como a RANGE de celulas a serem copiadas escrita em cada CELULA, por exemplo:
A1 = B4:Q11
A2 = B4:Q13
A3 = B4:Q17
Por ultimo consegui inserir um loop para que ele faça esse trabalho até o fim das celulas que quero que copie sempre inserindo um slide novo em branco.
Não sou programador mas ficou boa para o que necessito.
Sub ExcelRangeToPowerPoint_2()
'PURPOSE: Copy/Paste An Excel Range Into a New PowerPoint Presentation
'SOURCE: www.TheSpreadsheetGuru.com
Dim rng As Range
Dim PowerPointApp As Object
Dim myPresentation As Object
Dim mySlide As Object
Dim myShape As Object
Dim strFile As Variant
Dim strRng As Range
' ALTERE LINHA ABAIXO: local do seu *.PPT
strFile = Sheets("EXEMPLO").Cells(2, 24).Value
ULTIMA_LINHA = Sheets("EXEMPLO").Range("B1048576").End(xlUp).Row
'Copy Range from Excel
' Set rng = ThisWorkbook.ActiveSheet.Range(strRng.Address)
'Create an Instance of PowerPoint
On Error Resume Next
'Is PowerPoint already opened?
Set PowerPointApp = GetObject(class:="PowerPoint.Application")
'Clear the error between errors
Err.Clear
'If PowerPoint is not already open then open PowerPoint
If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application")
'Handle if the PowerPoint Application is not found
If Err.Number = 429 Then
MsgBox "PowerPoint não está disponível, saindo."
Exit Sub
End If
On Error GoTo 0
'Optimize Code
Application.ScreenUpdating = False
'Create a New Presentation
'Set myPresentation = PowerPointApp.Presentations.Add
Set myPresentation = CreateObject("PowerPoint.Application")
myPresentation.Presentations.Open strFile
n_IMP = 4
n_XPT = 1
For n_IMP = 4 To ULTIMA_LINHA
SAIR = Sheets("EXEMPLO").Cells(3, 1).Value
CONTEUDO = Sheets("EXEMPLO").Cells(n_XPT, 1).Value
Range(CONTEUDO).Copy
'Add a slide to the Presentation
With myPresentation.ActivePresentation
Set mySlide = .Slides.Add(.Slides.Count + 1, Layout:=ppLayoutBlank)
End With
'Copy Excel Range
' rng.Copy
'Paste to PowerPoint and position
mySlide.Shapes.PasteSpecial DataType:=3 '2 = ppPasteEnhancedMetafile
Set myShape = mySlide.Shapes(mySlide.Shapes.Count)
'Set position:
myShape.Left = 66
myShape.Top = 55
'Make PowerPoint Visible and Active
PowerPointApp.Visible = True
PowerPointApp.Activate
'Clear The Clipboard
Application.CutCopyMode = False
If SAIR = CONTEUDO Then
Exit For
End If
n_XPT = n_XPT + 1
Next
End Sub
Postado : 08/12/2016 7:35 am