Новое в VBA: Excel VBA PDF для электронной почты - PullRequest
0 голосов
/ 05 сентября 2018

Я достаточно хорошо знаю VBA, но, похоже, довольно быстро освоился. Однако я врезался в стену ...

Я пытаюсь написать код, который преобразует лист в PDF, а затем отправляет мне этот PDF-файл и копирует его другому лицу. Все это будет назначено кнопке действия / триггеру, когда код заработает.

Вот что у меня есть:

Option Explicit

Sub SendExcelFileAsPDF()



Dim OutlookApp As Outlook.Application
Dim emItem As Object
Dim Receipt As String, Subject As String
Dim Message As String, Fname As String

Dim Recipient As Outlook.Recipient
Recipient = "dennis.aikens@fedex.com"
Subject = "Weekly Critical Items" & " " & Range("L1")
Message = Range("D2") & Range("J2") & "Weekly Critical Items submitted" & 
Range("L1") & " " & "in PDF Format"
Message = Message & vbNewLine & vbNewLine & "Offload Ops"
Fname = Application.DefaultFilePath & "/" & ActiveWorkbook.Name & ".pdf"


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fname

Set OutlookApp = New Outlook.Application

Set emItem = OutlookApp.CreateItem(olMailItem)
With emItem
.To = Recipient = "dennis.aikens@fedex.com"
.Subject = Subject
.Body = Message
.Attachements.Add Fname
.Send
End With
Set OutlookApp = Nothing

End Sub

В строке получателя есть проблемы. Когда я запускаю отладчик, он выдает ошибку Run-Time '91: переменная объекта или переменная блока не установлена, и я не уверен, почему это так? Я отредактировал этот код из видео на Youtube, в котором изложено именно то, что мне нужно, и, конечно, он работал в видео, но не в этом случае.

Я нахожусь на корпоративном биржевом счете, если это что-то меняет. В другом стековом вопросе я увидел разницу.

Есть предложения?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Эта строка

.To = Recipient = "dennis.aikens@fedex.com"

должно быть просто

.To = Получатель

0 голосов
/ 05 сентября 2018

Я бы затемнил получателя как строку и обновил бы назначение .to:

Изменение

Dim Recipient As Outlook.Recipient

.To = Recipient = "dennis.aikens@fedex.com"

до

Dim Recipient As string

.To = Recipient
...