Vba 运行时错误287-设置检查器时Outlook.wordeditor
设置wdDoc=oInspector.WordEditor'如果代码在迁移到Office 365后突然停止工作,或者由于任何其他原因,请参考下面的代码。为了便于理解和实施,添加了注释 如果您具有管理权限,则还可以尝试以下链接中给出的注册表更改: 但是,我建议使用Excel版本的代码,不需要进行系统更改,因为每个最终用户的机器上也需要进行系统更改Vba 运行时错误287-设置检查器时Outlook.wordeditor,vba,outlook,Vba,Outlook,设置wdDoc=oInspector.WordEditor'如果代码在迁移到Office 365后突然停止工作,或者由于任何其他原因,请参考下面的代码。为了便于理解和实施,添加了注释 如果您具有管理权限,则还可以尝试以下链接中给出的注册表更改: 但是,我建议使用Excel版本的代码,不需要进行系统更改,因为每个最终用户的机器上也需要进行系统更改 选项显式 子创建_电子邮件(ByVal strTo作为字符串,ByVal strSubject作为字符串) 变暗RNGTOPITURE As范围 D
选项显式
子创建_电子邮件(ByVal strTo作为字符串,ByVal strSubject作为字符串)
变暗RNGTOPITURE As范围
Dim outlookApp作为对象
将邮件变暗为对象
将strTempFilePath设置为字符串
将strTempFileName设置为字符串
随便你说什么,都没关系
strTempFileName=“RangeAsPNG”
'rngToPicture在工作簿中定义为命名范围,请在使用前修改此名称
设置RNGTOPITURE=范围(“RNGTOPITURE”)
设置outlookApp=CreateObject(“Outlook.Application”)
Set-Outmail=outlookApp.CreateItem(olMailItem)
'创建电子邮件
发邮件
.To=strTo
.Subject=strSubject
'将范围创建为PNG文件并存储在临时文件夹中
调用createPNG(rngToPicture,strTempFileName)
'在Outlook中嵌入图像
strTempFilePath=Environ$(“temp”)&“\”&strTempFileName&“.png”
.Attachments.Add strTempFilePath,olByValue,0
'更改下面的HTML以使用换行符(
)添加标题(亲爱的John)或签名(亲切问候)
.HTMLBody=“”
.展示
以
发送邮件=无
Set-outlookApp=无
设置rngToPicture=Nothing
端接头
子createPNG(ByRef rngToPicture作为范围,nameFile作为字符串)
把我当作绳子
wksName=rngToPicture.Parent.Name
'删除同名的现有PNG文件(如果存在)
出错时继续下一步
Kill Environ$(“temp”)&“\”nameFile&“.png”
错误转到0
'将范围复制为图片
rngToPicture.CopyPicture
'将图片粘贴到相同尺寸的图表区域中
使用此工作簿。工作表(wksName)。图表对象。添加(rngToPicture.Left,rngToPicture.Top,rngToPicture.Width,rngToPicture.Height)
.激活
.Chart.Paste
'将图表作为PNG文件导出到临时文件夹
.Chart.Export环境$(“temp”)和“\”名称文件和“.png”、“png”
以
工作表(wksName).ChartObjects(工作表(wksName).ChartObjects.Count).删除
端接头
Microsoft Word是默认的电子邮件编辑器吗?
Set oApp = CreateObject("Outlook.Application")
Set oMailItem = oApp.CreateItem(0)
oMailItem.BodyFormat = olFormatRichText
Set oInspector = oMailItem.GetInspector
oInspector.Display
MsgBox "IsWordMail = " & oInspector.IsWordMail & vbLf & "EditorType = " & (oInspector.EditorType = olEditorWord) ' Both are true.
Option Explicit
Sub Create_Email(ByVal strTo As String, ByVal strSubject As String)
Dim rngToPicture As Range
Dim outlookApp As Object
Dim Outmail As Object
Dim strTempFilePath As String
Dim strTempFileName As String
'Name it anything, doesn't matter
strTempFileName = "RangeAsPNG"
'rngToPicture is defined as NAMED RANGE in the workbook, do modify this name before use
Set rngToPicture = Range("rngToPicture")
Set outlookApp = CreateObject("Outlook.Application")
Set Outmail = outlookApp.CreateItem(olMailItem)
'Create an email
With Outmail
.To = strTo
.Subject = strSubject
'Create the range as a PNG file and store it in temp folder
Call createPNG(rngToPicture, strTempFileName)
'Embed the image in Outlook
strTempFilePath = Environ$("temp") & "\" & strTempFileName & ".png"
.Attachments.Add strTempFilePath, olByValue, 0
'Change the HTML below to add Header (Dear John) or signature (Kind Regards) using newline tag (<br />)
.HTMLBody = "<img src='cid:DashboardFile.png' style='border:0'>"
.Display
End With
Set Outmail = Nothing
Set outlookApp = Nothing
Set rngToPicture = Nothing
End Sub
Sub createPNG(ByRef rngToPicture As Range, nameFile As String)
Dim wksName As String
wksName = rngToPicture.Parent.Name
'Delete the existing PNG file of same name, if exists
On Error Resume Next
Kill Environ$("temp") & "\" & nameFile & ".png"
On Error GoTo 0
'Copy the range as picture
rngToPicture.CopyPicture
'Paste the picture in Chart area of same dimensions
With ThisWorkbook.Worksheets(wksName).ChartObjects.Add(rngToPicture.Left, rngToPicture.Top, rngToPicture.Width, rngToPicture.Height)
.Activate
.Chart.Paste
'Export the chart as PNG File to Temp folder
.Chart.Export Environ$("temp") & "\" & nameFile & ".png", "PNG"
End With
Worksheets(wksName).ChartObjects(Worksheets(wksName).ChartObjects.Count).Delete
End Sub