【问题标题】:Formatting email body from Excel using VBA使用 VBA 从 Excel 格式化电子邮件正文
【发布时间】:2020-04-02 10:03:51
【问题描述】:

我从这里https://stackoverflow.com/a/49207287/4539709找到了下面的代码

Option Explicit
Public Sub Example()
' add ref - tool -> references - > Microsoft Outlook XX.X Object Library
    Dim olApp As Outlook.Application
    Set olApp = New Outlook.Application

    Dim Email As Outlook.MailItem
    Set Email = olApp.CreateItem(0)

' add ref - tool -> references - > Microsoft Word XX.X Object Library
    Dim wdDoc As Word.Document '<=========
    Set wdDoc = Email.GetInspector.WordEditor

    Dim Sht As Excel.Worksheet
    Set Sht = ThisWorkbook.Worksheets("Sheet1")

    Dim rng As Range
    Set rng = Sht.Range("A4:H16").SpecialCells(xlCellTypeVisible)
        rng.Copy

    With Email
        .To = Sht.Range("C1")
        .Subject = Sht.Range("B1")
        .Display

         wdDoc.Range.PasteAndFormat Type:=wdFormatOriginalFormatting
    End With

End Sub

我在代码中遇到了一个问题,即在您发送电子邮件后,行仍然按照附件选择。无论如何要清除这个

【问题讨论】:

  • 您能更具体地谈谈这个问题吗?代码是否运行但什么也不做?它拒绝运行吗?如果是这样,会引发什么错误类型?
  • 嗨文森特,它根本不运行。当我尝试将其分配给按钮时,它找不到模块。不确定我是否可以在此处附上表格?
  • 您不能将此宏分配给按钮。 if 是一个带参数的函数。您需要一个设置mailnameMshtCCmailCCperson 的值的子程序。
  • VBA 宏共有三种类型。 (1) 没有参数的子程序。例如我可以有一个宏DeleteOldEmails()。此宏从任何文件夹中删除超过一年的电子邮件。它不需要参数,因为它的作用是固定的。它从操作系统获取今天的日期,并扫描每个文件夹以查找在今天日期之前一年多收到的电子邮件。用户可以像这样调用子程序。
  • (2) 带参数的子程序。例如我可以有一个宏DeleteOldEmailsFromFolder(ByVal FolderName As String)。此宏从命名文件夹中删除旧电子邮件。如果用户想使用这个宏,他们需要子程序GetFolderNameAndDeleteOldEmails()。该子例程询问用户文件夹名称,然后调用DeleteOldEmailsFromFolder 删除电子邮件。

标签: excel vba outlook


【解决方案1】:

在末尾添加下面一行Application.CutCopyMode = False

    With Email
        .To = Sht.Range("C1")
        .Subject = Sht.Range("B1")
        .Display

         wdDoc.Range.PasteAndFormat Type:=wdFormatOriginalFormatting
    End With

    Application.CutCopyMode = False    '<---

End Sub

【讨论】:

    猜你喜欢
    • 2014-02-10
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2022-01-03
    • 2011-06-02
    • 2020-05-09
    • 1970-01-01
    相关资源
    最近更新 更多