Отправить код электронной почты отправляет пустой файл, если шаблон не был сохранен первым - PullRequest
0 голосов
/ 17 февраля 2020

Приведенный ниже код используется в других файлах для отправки формы для проверки и одобрения, но в этой книге по какой-то причине я получаю пустые файлы, и добавленное пользователями содержимое теряется. Я знаю, что это не служба проверки кода, но мне было интересно, что я что-то упустил с этим - поэтому мне нужно сохранить файл, прежде чем он будет прикреплен к электронному письму?

    'Open e-mail and create a new message
Set OutlookApp = CreateObject("Outlook.Application")
Set OlObjects = OutlookApp.GetNamespace("MAPI")
Set newmsg = OutlookApp.CreateItem(olMailItem)
Dim SubmitEMail As String: SubmitEMail = ws.Range("U1").Value


' set the requirements for the new message
With newmsg
    .Recipients.Add SubmitEMail
    .CC = ws.Range("U2").Value
    .Subject = "New Concession request form submitted"
'use string defined above as the main body of the message
    .Body = "Dear " & Location & "," & vbLf & vbLf & "Please find attached: a new Concession request.  Please review and indicate Concession number, or provide details of amendments needed." & vbLf & vbLf & "Regards," & vbLf & vbLf & SenderName
    .Attachments.Add wb.FullName
    .Display
End With
End If

MsgBox "Please review the E-Mail, Adding any additional recipients as required. add your signature and send to complete the submission"

Бит отправки электронной почты работает отлично, но вложение всегда пустое, добавленные пользователем данные теряются (если пользователь сначала сохраняет рабочую книгу на своей локальной станции), процесс работает отлично, но я хочу не спрашивать их так это - потенциально создает 2 версии документа, где я хочу только одну)

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Если вы отлаживаете свой саб и используете Debug.Print wb.FullName без сохранения wb - вы получите только имя "Book (n)". В вашем случае я могу предложить следующее решение:

Dim fileName As String


' save to temp directory
wb.SaveAs Environ("TEMP") & wb.Name & ".xlsx"

' save the full name to string variable
fileName = wb.FullName

' close the file in order to be able to delete it
wb.Close

'[attach the file
'.Attachments.Add fileName
' and do other stuff you need]


' delete temporary file
Kill fileName 

Это также позволит вам не просить пользователей сохранять файл, и они даже не узнают об этом.

0 голосов
/ 17 февраля 2020

Для прикрепления требуется сохраненная рабочая книга. Если вы хотите убедиться, что нет ненужных дубликатов, вы можете сделать следующее:

  • Сохранить копию рабочей книги во временной папке (с SaveCopyAs)
  • вложением эту копию на электронную почту и отобразить
  • удалить копию во временной папке
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...