Как: прикрепить .pdf и отправить электронное письмо без ввода данных пользователем - PullRequest
0 голосов
/ 15 февраля 2019

Я отредактировал свой вопрос на основе отзывов.У меня есть форма, которую я хочу, чтобы пользователи могли без вывода сообщений (ввод пользователя не требуется) сохранять и отправлять одним нажатием кнопки.

Следующий код сохраняется в формате .pdf с правильным именем в том же документе / пути, что и исходный файл (который я хочу).Однако, когда электронное письмо отправлено, вложение является исходным файлом .docm.

Окончательное вложение должно быть в формате .pdf, так как оно будет отправлено по электронной почте на сайт Microsoft Team, а файлы с поддержкой макросов работать не будутКоманды.

Я новичок в VBA, помимо базовых команд для собственного рабочего процесса.Я работаю над различными учебными пособиями / курсами и очень большой книгой по vba для Office, но я был бы признателен за исправление ошибки кодирования новичка раньше, чем позже.

Private Sub btnSubmit_Click()

strName = ActiveDocument.SelectContentControlsByTitle("ddName")(1).Range.Text
strDate = ActiveDocument.SelectContentControlsByTitle("ddDate")(1).Range.Text
strTest = ActiveDocument.SelectContentControlsByTitle("ddTestNumber")(1).Range.Text

Dim strFilename As String
strFilename = strName & "_" & "VBATestFile_" & strTest & "_" & Format(strDate, "yyyymmdd") & ".pdf"

ActiveDocument.SaveAs2 strFilename, FileFormat:=wdFormatPDF

Dim OL          As Object
Dim EmailItem   As Object
Dim Doc         As Document

Application.ScreenUpdating = False
Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)
Set Doc = ActiveDocument
Doc.Save

With EmailItem
    .Subject = strName & " Test" & strTest
    .Body = "Test email send for " & strName & " " & strTest & "."
    .To = "email address here"
    .Importance = olImportanceNormal
    .Attachments.Add Doc.FullName
    .Send
End With

Application.ScreenUpdating = True

MsgBox "Form Submitted", vbInformation

Set Doc = Nothing
Set OL = Nothing
Set EmailItem = Nothing

End Sub

1 Ответ

0 голосов
/ 26 февраля 2019

Решено:

Private Sub btnSubmit_Click()

strName = ActiveDocument.SelectContentControlsByTitle("ddName")(1).Range.Text
strDate = ActiveDocument.SelectContentControlsByTitle("ddDate")(1).Range.Text
strTest = ActiveDocument.SelectContentControlsByTitle("ddTestNumber")(1).Range.Text

Dim strFilename As String 'Create Filename based on data in Content Controls  
strFilename = strName & "_" & "VBATestFile_" & strTest & "_" & format(strDate, "yyyymmdd") & ".pdf"

ActiveDocument.SaveAs2 strFilename, FileFormat:=wdFormatPDF 'Save as .pdf to Documents folder

Dim OL          As Object
Dim EmailItem   As Object
Dim Doc         As Document

Dim sPathUser As String 'Get current file path
sPathUser = Environ$("USERPROFILE") & "\my documents\"

Application.ScreenUpdating = False 'Silently send email with .pdf file attached
Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)
Set Doc = ActiveDocument
Doc.Save

With EmailItem
    .Subject = strName & " Test " & strTest
    .Body = "Test email send for " & strName & " " & strTest & "."
    .To = "email address"
    .Importance = olImportanceNormal
    .Attachments.Add strFilename
    .Send
End With

Application.ScreenUpdating = True

MsgBox "Form Submitted", vbInformation 'Confirm document submission for user

Set Doc = Nothing
Set OL = Nothing
Set EmailItem = Nothing

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...