Don't do it with copy and paste it is very difficult to know which file is active.
I would make sure the old pres is saved and then determine the index of the slide with the text and use InsertFromFile
Sub test2()
Dim OldPPT As PowerPoint.Presentation
Dim NewPPT As PowerPoint.Presentation
Dim k As Long
Dim strPath As String
' Not needed if you are working in PPT
' Set pp = GetObject(, "PowerPoint.Application")
Set OldPPT = ActivePresentation
Set NewPPT = Presentations("Testing.pptm")
'Old Presentation must be saved and up to date
strPath = OldPPT.FullName
k = getIndex(NewPPT, "4a) Marketing")
If k > 1 Then
Call NewPPT.Slides.InsertFromFile(FileName:=strPath, _
Index:=k, SlideStart:=2)
Else
MsgBox "Text not found"
End If
End Sub
Function getIndex(opres As Presentation, strFind As String) As Long
Dim osld As Slide
Dim oshp As Shape
For Each osld In opres.Slides
For Each oshp In osld.Shapes
If oshp.HasTextFrame Then
If oshp.TextFrame.HasText Then
If oshp.TextFrame.TextRange Like "*" & strFind & "*" Then
getIndex = osld.SlideIndex
Exit Function
End If
End If
End If
Next oshp
Next osld
End Function