msgInternal.Delete is deleting the open message from Outlook. The following version will remove the temporary file also.
Based on skattoni's process for handling attached messages, the following should print the PDFs, though what you mean by 'copy' them I am not sure. It saves them in the named folder. The code does not include any error handling for PDFs of the same name:
Option Explicit
Sub PrintPDFs()
Dim olFolder As Folder
Dim olItem As MailItem
Set olFolder = Application.Session.PickFolder
For Each olItem In olFolder.Items
msgAsAttachment olItem
Next olItem
lbl_Exit:
Set olFolder = Nothing
Set olItem = Nothing
Exit Sub
End Sub
Sub msgAsAttachment(olItem As MailItem)
Dim att As Attachment
Dim sFname As String, sIntFname As String
Dim sExt As String
Dim msgInternal As MailItem
Dim attInternal As Attachment
Const pdfApp As String = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"
Const tempFileName As String = "dummy.msg"
Const tempFolder As String = "C:\Test\"
For Each att In olItem.Attachments
sFname = att.FileName
sExt = Mid(sFname, InStrRev(sFname, Chr(46)))
Select Case sExt
Case ".msg"
att.SaveAsFile tempFolder & tempFileName
Set msgInternal = CreateItemFromTemplate(tempFolder & tempFileName)
For Each attInternal In msgInternal.Attachments
sIntFname = attInternal.FileName
sExt = Mid(sIntFname, InStrRev(sIntFname, Chr(46)))
If sExt = ".pdf" Then
att.SaveAsFile tempFolder & sIntFname
Shell pdfApp & " /n /h /t " & tempFolder & sIntFname
End If
Next
msgInternal.Delete
Kill tempFolder & tempFileName
Case ".pdf"
att.SaveAsFile tempFolder & sFname
Shell pdfApp & " /n /h /t " & tempFolder & sFname
End Select
Next
lbl_Exit:
Set msgInternal = Nothing
Exit Sub
End Sub