Как сохранить XLSX из функции RangetoHTML для использования в качестве вложения OL - PullRequest
0 голосов
/ 09 мая 2019

В настоящее время я могу успешно скопировать диапазон ячеек с сохранением форматирования в тело письма, однако я также хотел бы прикрепить файл XLSX, который отражает то, что отображается в теле письма.Возникли проблемы при передаче файловой переменной между функциями и процедурами электронной почты.

.HTMLBody = "<BODY style=font-size:11pt;font-family:Calibri>Hello " & StaffName & ", <br />  <br /> Reach out if you have any questions/concerns." & vbNewLine & vbNewLine & RangetoHTML(rng)

.Attachments.Add ****VARIABLE FROM Function RangetoHTML****

Function RangetoHTML(rng As Range)
    Dim myFileName As String

    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set tempWB = Workbooks.Add(1)
    With tempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        '.Cells(1).PasteSpecial xlPasteAllMergingConditionalFormats, , False, False
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        '.Cells(1).PasteSpecial xlPasteAllUsingSourceTheme, , False, False
        .Cells(1).Select
        ActiveSheet.Range("A:A").ClearContents
        ActiveSheet.Range("A:A").ClearFormats
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0

    'FOLLOWING THREE LINES SAVE THE FILE THAT NEEDS TO BE PASSED BACK TO OUTMAIL ROUTINE
    myFileName = Environ$("temp") & "\" & "File-" & VBA.Format(VBA.Now, "dd-MMM-yyyy hh-mm-ss") & ".xlsx"
    ActiveSheet.Copy
    .SaveAs Filename:=myFileName, FileFormat:=51, CreateBackup:=False

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

1 Ответ

0 голосов
/ 09 мая 2019

Изменение

Function RangetoHTML(rng As Range)

до

Function RangetoHTML(rng As Range) As String

и в теле функции добавить:

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