将Excel中的单元格范围复制为图片,并在电子邮件正文中添加文本
我打算将一系列单元格添加为活动工作簿中的图片以及一些文本 但出于某种原因,它跳过了文本,只将图像粘贴到电子邮件正文中 我该如何解决这个问题将Excel中的单元格范围复制为图片,并在电子邮件正文中添加文本,excel,vba,outlook,Excel,Vba,Outlook,我打算将一系列单元格添加为活动工作簿中的图片以及一些文本 但出于某种原因,它跳过了文本,只将图像粘贴到电子邮件正文中 我该如何解决这个问题 Option Explicit Public Sub POSTRUN() Dim olApp As Outlook.Application Set olApp = New Outlook.Application Dim Olobj As Outlook.Application Set Olobj = CreateObject("Outlook.Applic
Option Explicit
Public Sub POSTRUN()
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
Dim Olobj As Outlook.Application
Set Olobj = CreateObject("Outlook.Application")
Dim olNs As Outlook.Namespace
Set olNs = olApp.GetNamespace("MAPI")
Dim Inbox As Outlook.MAPIFolder
Set Inbox = olNs.GetDefaultFolder(olFolderInbox)
Dim subject As String
subject = ThisWorkbook.Sheets("SendMail").Range("I5").Text
Debug.Print subject
Dim i As Long
Dim Filter As String
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " >= '01/01/1900' And " & _
Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " < '12/31/2100' And " & _
Chr(34) & "urn:schemas:httpmail:subject" & _
Chr(34) & "Like '%" & subject & "%'"
Dim Items As Outlook.Items
Set Items = Inbox.Items.Restrict(Filter)
Items.Sort "[ReceivedTime]", False
For i = Items.Count To 1 Step -1
DoEvents
If TypeOf Items(i) Is MailItem Then
Dim Item As Object
Set Item = Items(i)
Debug.Print Item.subject ' Print on Immediate Window
Debug.Print Item.ReceivedTime ' Print on Immediate Window
Dim r As Range
Set r = ThisWorkbook.Sheets("post").Range("A1:M30")
r.Copy
Dim outMail As Outlook.MailItem
Set outMail = Olobj.CreateItem(olMailItem)
Dim body
Dim ReplyAll As Outlook.MailItem
Set ReplyAll = Item.ReplyAll
Dim wordDoc As Word.Document
Set wordDoc = ReplyAll.GetInspector.WordEditor
With ReplyAll
.HTMLBody = "<font size=""3"" face=""Calibri"">" & _
"Hi <br><br>" & _
"The " & Left(ActiveWorkbook.Name, _
InStr(ActiveWorkbook.Name, ".") - 1) & _
"</B> has been posted.<br>" & _
.HTMLBody
wordDoc.Range.PasteAndFormat wdChartPicture
.Display
Exit For
End With
End If
Next
End Sub
选项显式
公共子邮轮()
Dim olApp作为Outlook.Application
Set olApp=newoutlook.Application
作为Outlook.Application的Dim-Olobj
设置Olobj=CreateObject(“Outlook.Application”)
将OLN设置为Outlook.Namespace
Set olNs=olApp.GetNamespace(“MAPI”)
将收件箱暗显为Outlook.Mapi文件夹
设置收件箱=olNs.GetDefaultFolder(olFolderInbox)
模糊主题为字符串
主题=此工作簿。工作表(“SendMail”)。范围(“I5”)。文本
调试。打印主题
我想我会坚持多久
将筛选器设置为字符串
Filter=“@SQL=“&Chr(34)”和“urn:schemas:httpmail:datereceived”和_
Chr(34)和“>='01/01/1900'和“&_
Chr(34)&“urn:schemas:httpmail:datereceived”&_
Chr(34)和“<'12/31/2100'和”&_
Chr(34)和“urn:schemas:httpmail:subject”以及_
Chr(34)&类似“%”和subject&“%”
将项目设置为Outlook。项目
设置项目=收件箱.Items.Restrict(过滤器)
Items.Sort“[ReceivedTime]”,False
对于i=项目。计数为1步骤-1
多芬特
如果项目类型(i)为MailItem,则
将项目变暗为对象
集合项目=项目(i)
Debug.Print Item.subject在即时窗口上打印
Debug.Print Item.ReceivedTime“在即时窗口上打印”
调光范围
设置r=ThisWorkbook.Sheets(“post”).范围(“A1:M30”)
r、 抄袭
将outMail设置为Outlook.MailItem
Set-outMail=Olobj.CreateItem(olMailItem)
暗体
Dim ReplyAll作为Outlook.MailItem
Set replyll=Item.replyll
Dim wordDoc作为Word.Document
设置wordDoc=ReplyAll.GetInspector.WordEditor
答复
.HTMLBody=”“&_
“嗨
”和_
“The”&左(ActiveWorkbook.Name_
InStr(ActiveWorkbook.Name,“.”-1)和_
“已发布。
”&_
.HTMLBody
wordDoc.Range.PasteAndFormat wdChartPicture
.展示
退出
以
如果结束
下一个
端接头
这不是跳过,您只是用粘贴的图像覆盖了HTMLBody
,所以您需要做的是使用
范例
你已经有了
先生,非常感谢你,因为你我学到了很多。。感谢stackoverflow创建了这样一个平台。
With ReplyAll
.HTMLBody = "<font size=""3"" face=""Calibri"">" & _
"Hi <br><br>" & _
"The " & Left(ActiveWorkbook.Name, _
InStr(ActiveWorkbook.Name, ".") - 1) & _
"</B> has been posted.<br>" & .HTMLBody
.Display
With wordDoc.Paragraphs(2)
.Range.InsertParagraphAfter
.Range.PasteAndFormat Type:=wdChartPicture
.Range.ParagraphFormat.LineSpacingRule = wdLineSpaceDouble
End With
Exit For
End With
Dim Olobj As Outlook.Application
Set Olobj = CreateObject("Outlook.Application")
Dim outMail As Outlook.MailItem
Set outMail = Olobj.CreateItem(olMailItem)
Dim body
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
Dim Item As Object
Set Item = Items(i)