【发布时间】: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 是一个带参数的函数。您需要一个设置
mail、name、Msht、CCmail和CCperson的值的子程序。 -
VBA 宏共有三种类型。 (1) 没有参数的子程序。例如我可以有一个宏
DeleteOldEmails()。此宏从任何文件夹中删除超过一年的电子邮件。它不需要参数,因为它的作用是固定的。它从操作系统获取今天的日期,并扫描每个文件夹以查找在今天日期之前一年多收到的电子邮件。用户可以像这样调用子程序。 -
(2) 带参数的子程序。例如我可以有一个宏
DeleteOldEmailsFromFolder(ByVal FolderName As String)。此宏从命名文件夹中删除旧电子邮件。如果用户想使用这个宏,他们需要子程序GetFolderNameAndDeleteOldEmails()。该子例程询问用户文件夹名称,然后调用DeleteOldEmailsFromFolder删除电子邮件。