vba - 将电子邮件正文保存到 Word 文档

标签 vba outlook ms-word office-2016

我的目标是将事件电子邮件的正文从 Outlook 复制到 MS Word,并将 Word 保存到指定的目标位置。

代码

Dim objMail as Outlook.MailItem
Dim objWord As Object
Dim objDocument As Object
Dim objFSO As Object
Dim objTextStream As Object

Set objMail = Application.ActiveInspector.CurrentItem
Set objWord = CreateObject("Word.Application")
Set objDocument = objWord.Documents.Add
objMail.GetInspector().WordEditor.Range.FormattedText.Copy
objDocument.Range.Paste

这是正确的方法吗?

最佳答案

如果您真的选择了一封电子邮件(在列表中或打开的),您可以检查并复制其格式化的正文,如下所示:

Private Sub CopyEMailBodyToWord()
    Dim objOutlook As Outlook.Application
    Dim objMail As Object      'Outlook.MailItem, but has to be checked later
    Dim objWord As Object
    Dim objDocument As Object

    Set objOutlook = Outlook.Application

    Select Case TypeName(objOutlook.ActiveWindow)
    Case "Explorer"     ' get current item in list view
        Set objMail = objOutlook.ActiveExplorer.Selection.Item(1)
    Case "Inspector"    ' get open item
        Set objMail = objOutlook.ActiveInspector.CurrentItem
    End Select

    If objMail.Class = olMail Then
        Set objWord = GetObject(, "Word.Application")
        If objWord Is Nothing Then Set objWord = CreateObject("Word.Application")
        Set objDocument = objWord.Documents.Add

        ' copy formatted body:
        objMail.GetInspector.WordEditor.Range.FormattedText.Copy
        objDocument.Range.Paste

        ' or copy text only:
        'objDocument.Range.Text = objMail.Body

        With objWord.FileDialog(msoFileDialogSaveAs)
            .Title = "Save ..."
            .InitialFileName = objWord.Options.DefaultFilePath(wdDocumentsPath) & _
                "\" & objMail.Subject & ".docx"
            If .Show <> False Then
                objDocument.SaveAs _
                    FileName:=.SelectedItems(1), _
                    AddToMru:=False
            End If
        End With

    End If
End Sub

关于vba - 将电子邮件正文保存到 Word 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55567406/

相关文章:

excel - 尝试遍历 B 列,如果一行中的两个单元格包含相同的文本,则删除第一个整行并保留第二个

JavaMail API - 读取大型 outlook 邮箱 (>3000) 的邮件内容

ruby - 如何使用 Ruby 计算 Microsoft Word 文件中的页数?

html - 表格宽度在 Outlook 2010 中不起作用

regex - VBA 使用正则表达式匹配希腊词作为整个词

excel - 如何删除记事本文件中的字母数字字符

excel - VBA 图例和绘图区域调整大小

ms-access - 完成某些字段后,使字段在 MS Access 表单中可见

vba - 从一个工作表复制范围根据另一工作表上的单元格值将部分范围粘贴到同一工作表中

json - 逻辑应用 - 使用 json 从 http 请求正文获取电子邮件信息