2017-12-06 21 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"を使用しました。これはショートカットです。これは、電子メールを正しく送信するようです。

関連する問題