2017-12-06 5 views
0

첨부 파일이있는 Outlook 전자 메일을 생성하는 Excel VBA 코드가 있습니다.Windows 10으로 업그레이드 한 후 보내기 명령에서 오류 287

이것은 Windows 8.1에서 작동하지만 Windows 10에서는 작동하지 않습니다. 매크로를 밟아서 끝까지 가져 와서 전자 메일을 생성 한 다음 OutMail.Send 명령을 실패합니다. 여기서 코드는 애플리케이션 정의 또는 개체 정의 오류

- 에러는

런타임 에러 (287)이다.

Sub batchallocationemail() 

'define email & pdf 
Dim IsCreated As Boolean 
Dim PdfFile As String, Title As String 
Dim OutlApp As Object 
Dim OutMail As Object 

' 
' print allocation Macro 

'define worksheets 
Dim ws As Worksheet 
Set ws = Sheets("Caseworkers") 
Dim ws2 As Worksheet 
Set ws2 = Sheets("Allocation Sheet") 
'define range 
Dim NameRange As Range 
Dim NameRange2 As Range 
Dim x As Range 
Dim z As Range 
Set z = ws2.Range("B1") 

Set NameRange = ws.Range("A1:C69") 
Set NameRange2 = ws.Range("A2:A69") 
Set NameRange3 = ws.Range("C2:C69") 

'Selects name from list and pastes into allocation 
ws.Select 
NameRange.AutoFilter Field:=2, Criteria1:="In" 
For Each x In NameRange2.SpecialCells(xlCellTypeVisible) 
     x.Copy 
     ws2.Select 
     Range("B1").Select 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
     ws2.Select 
'CONVERTS ACTIVE SHEET TO PDF AND EMAILS IT 
     ' Define Title 
     Title = Range("B1").Value 
     ' Define PDF filename 
     Title = "Allocation Sheet for " & Range("B1").Value 
     PdfFile = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & Title & ".pdf" 
    ' Export activesheet as PDF 
     With ActiveSheet 
      .ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 
     End With 
' Use already open Outlook if possible 
     On Error Resume Next 
     Set OutlApp = GetObject(, "Outlook.Application") 
     If Err Then 
      Set OutlApp = CreateObject("Outlook.Application") 
      IsCreated = True 
     End If 
     OutlApp.Visible = True 
     On Error GoTo 0 

' Prepare e-mail with PDF attachment 
     Set OutMail = OutlApp.CreateItem(0) 
     With OutMail 

' Prepare e-mail 
      OutMail.Subject = Title 
      OutMail.To = x.Offset(0, 2).Value ' <-- Put email of the recipient here 
      OutMail.CC = x.Offset(0, 3).Value ' <-- Put email of 'copy to' recipient here 
      OutMail.Body = "Hello," & vbLf & vbLf _ 
      & "Please see your attached allocation sheet in PDF format." & vbLf & vbLf _ 
      & "Kind Regards," & vbLf _ 
      & Application.UserName & vbLf & vbLf 
      OutMail.Attachments.Add PdfFile 
     ' Try to send 
      Application.Visible = True 
      OutMail.Display 
      OutMail.Send 
     End With 

    ' Quit Outlook if it was not already open 
     If IsCreated Then OutlApp.Quit 

    ' Release the memory of object variable 
     Set OutMail = Nothing 
     Set OutlApp = Nothing 
    Next x 

End Sub 

답변

0

죄송합니다. 지난 밤에 몇 시간 씩보고 난 후에 이것을 일찍 게시했지만, 나는 그것을 가지고있는 것 같습니다. .Send 대신 Application.SendKeys "% s"을 사용했습니다. 바로 가기입니다. 이것은 전자 메일을 제대로 보내는 것 같습니다.