【问题标题】:Macros to Send attach different files to multiple individual emails, vba宏发送附加不同的文件到多个单独的电子邮件,vba
【发布时间】:2019-06-19 18:47:49
【问题描述】:

我是一名计算机技术员,而不是程序员,但在我的新工作中,我被要求在 excel (vba) 中完成一个宏。 它由其中一列中的身份证号码列表组成(每次使用时单元格的数量都是可变的,例如一天可以放 20 个人,另外 12 个人),以及另一列中的电子邮件。 在一个文件夹中有一些pdf文件,其名称是出现在excel中的人的身份证。

他们问我的是,按字母顺序订购身份证,拿身份证和电子邮件。身份证将用于查找您相应的pdf并将其添加为附件,并通过电子邮件发送给谁?那里的单元格与电子邮件数据一起使用。这必须对现有的每一行进行,将 pdf 文件附加并发送电子邮件到同一行的地址,直到工作表上没有更多行。

谁能告诉我该怎么做或告诉我需要哪些功能?

谢谢。

图解思路:

【问题讨论】:

    标签: excel vba email pdf


    【解决方案1】:

    宏当前设置为.Display 电子邮件而不发送。完成运行测试后,您需要将其更改为 .Send 以实际发送电子邮件。

    您还需要更新strLocation 的值。引号内是您需要放置包含所有目标 PDF 的文件夹位置的位置。

    只要每一行与一个人相关联,单元格的顺序就无关紧要。

    希望这些电子邮件是内部电子邮件 - 您不应将其用于外部邮件列表,因为您无法提供退订选项。如果您怀疑有垃圾邮件,Outlook 可能会标记/禁止您的帐户。

    这假定 Column C 中的值是 Outlook 将按原样识别的实际电子邮件地址。 (urdearboy@email.com)


    Sub CorpCard()
    
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    
    Application.ScreenUpdating = False
    Set OutApp = CreateObject("Outlook.Application")
    
    On Error GoTo cleanup
    
    For Each cell In Columns("C").Cells.SpecialCells(xlCellTypeConstants)
        If cell.Value Like "?*@?*.?*" Then
            Set OutMail = OutApp.CreateItem(0)
            On Error Resume Next
            With OutMail
                .SentOnBehalfOfName = "[your associated Outlook email here]"
                .to = cell.Value
                    .Subject = "Subject goes here"
                    .Body = "Hi " & Range("B" & cell.Row).Value & "," _
    
                    'Body to be patsed here
    
                strLocation = "C:\Users\urdearboy\Desktop\File Name\" & Cells(cell.Row, "D").Value & ".pdf"
                .Attachments.Add (strLocation)
            .Display
            '.Send
            End With
    
            On Error GoTo 0
            Set OutMail = Nothing
        End If
    Next cell
    
    cleanup:
        Set OutApp = Nothing
        Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 嗨@urdearboy,谢谢你的帮助,我会在周一工作。要使用公司电子邮件系统,我读到我需要用于 windows 2000 库的协作数据对象 (CDO),是这样吗?如果是这样,我会寻求有关它的信息。再次感谢!
    • 我经常使用这个宏
    • 嗨@urdearboy,我指的是不使用邮件客户端,例如outlook,而是在宏本身中配置我自己公司的外发邮件服务器的参数,我发现了什么是我必须使用CDO。我正在调整你给我的东西。 :-)
    • 嗨@urdearboy 我快要完成我的代码了:link 但是我在做一个计数器时遇到了问题(我认为 sintaxys 错误或者我遗漏了一些东西)。 wscript.shell 弹出窗口正在工作,每封电子邮件显示一条消息 1 秒钟,但我需要显示“i”/总内容行,例如:电子邮件 nº 1/30 发送到 john@doe.com 电子邮件 nº 2/30 发送到bob@doe.com ...
    • 我做的最后一件事是计算使用的总行数,但我不知道如何跳过标题(row1)或最好,从其他工作表中的特定列(电子邮件)计算行数(我有两个工作表,一个是我的第一条消息中的表格,另一个是第二个工作表包含所有宏按钮和电子邮件配置参数)。提前谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 2011-08-14
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多