gpt4 book ai didi

excel - 将范围从 Excel 复制到 Outlook 时如何保留格式

转载 作者:行者123 更新时间:2023-12-04 20:00:33 25 4
gpt4 key购买 nike

您好,我有一些格式的 Excel 表格 10(红) -> 15(绿) ,但最后我失去了我在 Excel 中的所有格式。我使用下一个代码从范围发送和电子邮件到 Outlook

Sub email()

Dim OutApp As Object
Dim OutMail As Object
Dim Fname As String
Dim hoja As String
Dim rng As Range
Dim celdas As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

Set rng = Range("C3:Q22")
On Error Resume Next
With OutMail

.To = "juan"
.CC = "Maria"
.BCC = ""
.Subject = "XXXX"
.HTMLBody = "Hey" & RangetoHTML(rng)

.Display 'or use .Display
End With
On Error GoTo 0

'Kill Fname
Set OutMail = Nothing
Set OutApp = Nothing

End Sub

和下一个功能,我从下一个链接 How to send mails from excel 复制
Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2010
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook

TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

'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 xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With

'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With

'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")

'Close TempWB
TempWB.Close savechanges:=False

'Delete the htm file we used in this function
Kill TempFile

Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function

最佳答案

虽然 OP 接受的答案可能对他有用,但我认为这不是正确的答案。

如果您想保留源中的格式,您需要使用 xlPasteAllUsingSourceTheme

代码:

With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
'.Cells(1).PasteSpecial xlPasteValues, , False, False
'.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).PasteSpecial xlPasteAllUsingSourceTheme, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With

关于excel - 将范围从 Excel 复制到 Outlook 时如何保留格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com