Vba 运行时错误287-设置检查器时Outlook.wordeditor

Vba 运行时错误287-设置检查器时Outlook.wordeditor,vba,outlook,Vba,Outlook,设置wdDoc=oInspector.WordEditor'如果代码在迁移到Office 365后突然停止工作,或者由于任何其他原因,请参考下面的代码。为了便于理解和实施,添加了注释 如果您具有管理权限,则还可以尝试以下链接中给出的注册表更改: 但是,我建议使用Excel版本的代码,不需要进行系统更改,因为每个最终用户的机器上也需要进行系统更改 选项显式 子创建_电子邮件(ByVal strTo作为字符串,ByVal strSubject作为字符串) 变暗RNGTOPITURE As范围 D

设置wdDoc=oInspector.WordEditor'如果代码在迁移到Office 365后突然停止工作,或者由于任何其他原因,请参考下面的代码。为了便于理解和实施,添加了注释

如果您具有管理权限,则还可以尝试以下链接中给出的注册表更改:

但是,我建议使用Excel版本的代码,不需要进行系统更改,因为每个最终用户的机器上也需要进行系统更改


选项显式
子创建_电子邮件(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