VBA: Как выровнять левый диапазон отправить в Outlook как HTML? - PullRequest
0 голосов
/ 28 февраля 2019

Вот код, который у меня есть до сих пор:

Dim objSelection As Excel.Range
Dim objTempWorkbook As Excel.Workbook
Dim objTempWorksheet As Excel.Worksheet
Dim strTempHTMLFile As String
Dim objTempHTMLFile As Object
Dim objFileSystem As Object
Dim objTextStream As Object
Dim objOutlookApp As Outlook.Application
Dim objNewEmail As Outlook.MailItem
Dim usuario As String
Dim linhaemail As Long

'Copy the selection that will be send using outlook'

Sheets("Padrão E-mail").Activate
ActiveSheet.Range("B1:K29").Select
Set objSelection = Selection
Selection.Copy

'Paste the copied selected ranges into a temp worksheet'
Set objTempWorkbook = Excel.Application.Workbooks.Add(1)
Set objTempWorksheet = objTempWorkbook.Sheets(1)

'Keep the values, column widths and formats in pasting'
 With objTempWorksheet.Cells(1)
    .PasteSpecial xlPasteValues
    .PasteSpecial xlPasteColumnWidths
    .PasteSpecial xlPasteFormats
 End With

'Save the temp worksheet as a HTML file'
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
strTempHTMLFile = objFileSystem.GetSpecialFolder(2).Path & "\Temp for Excel" & 
Format(Now, "YYYY-MM-DD hh-mm-ss") & ".htm"
Set objTempHTMLFile = objTempWorkbook.PublishObjects.Add(xlSourceRange, 
strTempHTMLFile, objTempWorksheet.Name, objTempWorksheet.UsedRange.Address)
objTempHTMLFile.Publish (True)
Set objTextStream = objFileSystem.OpenTextFile(strTempHTMLFile)

'Create a new email'
Set objOutlookApp = CreateObject("Outlook.Application")
Set objNewEmail = objOutlookApp.CreateItem(olMailItem)

'Read the HTML file data and insert into the email body'
 objNewEmail.HTMLBody = objTextStream.ReadAll

Когда этот диапазон (сохранить как временный HTML-файл) попадает в Outlook, он распознается как таблица, и они располагаются по центру.Так что у меня есть это пустое место слева.Например:

https://i.stack.imgur.com/Huinv.png

Как настроить выравнивание по левому краю?

1 Ответ

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

Понял!

objNewEmail.HTMLBody = "<table align=""left"">" & objTextStream.ReadAll & "</table>" & "<p align=""left"">" & objNewEmail.HTMLBody & "</p>"
...