将变量文件附加到VBA生成的电子邮件

时间:2016-08-10 11:56:32

标签: string excel vba email-attachments

谢谢你所有的帮助人:) 代码现在正在运行。

我仍然对VBA很新,我遇到了一些问题,欢迎提出建议。

我编写了一些代码,以便依赖于单元格中的值,不同的电子邮件将发送给工作表中指定的特定人员(每个人将收到一封电子邮件)。但是,我还想附上一个特定于该人的文件。

文件位置将每周更改,文件名也会更改,因为名称中有日期。

文件位置如下:

U:\ My path \ 2016-08-08

和文件名

"姓氏姓氏DD-MM-YYYY.xlsx"

(其中Firstname Surname早先定义为" cell")

我想出了以下代码(仅包含相关部分):

   Dim DBlocation as variable
   Dim DBdate as variable
   Dim strfilename as string

   DBlocation = InputBox("Please copy file path to this week's dashboard files")
  DBdate = InputBox("Please type date from DB filename")

   strfilename = DBlocation & "\" & cell & " " & DBdate & ".xlsx" 

   .display
   .To = cell
   .SentOnBehalfOfName = "email@email.com"
   .Subject = cell & " Dashboard " & Format(Date, "DD-MMM-YY")
   .HTMLBody = strbody & vbNewLine & .HTMLBody

   .Attachments.Add (strfilename)
   .display

我弹出一个带有文件名的文本框,它看起来正确,但没有任何内容附加到电子邮件中。

您能告诉我应该如何更改代码以获取文件吗?

提前非常感谢你。

更新

代码现在正如上所述。

我完成了你的建议并做了一些改变:

.Attachments.Add - 我在附件后添加了一个S

我还修改了我之前没有列出的代码的前面部分

   For Each cell In sh.Columns("A").Cells.SpecialCells(xlCellTypeVisible)

这是以前的xlCellTypeConstants

我不知道为什么会这样,但它有:) 一个超级快乐的人在这里。

3 个答案:

答案 0 :(得分:0)

如果strfilename是有效的文件名

.Attachment.Add strfilename

答案 1 :(得分:0)

以下是我不知道您的变量是否有效的尝试:

Sub AttachFile()

Dim OutApp As Object
Dim OutMail As Object
Dim DBlocation As Variant 'Not "variable"
Dim DBdate As Variant 'Not "variable"
Dim strFileName As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

'ActiveWorkbook.Path  <== Maybe use this instead if it is the same as "this week's dashboard files"?
DBlocation = InputBox("Please copy file path to this week's dashboard files")
DBdate = InputBox("Please type date from DB filename")

strFileName = DBlocation & "\" & cell & " " & DBdate & ".xlsx"

With OutMail
    .To = cell
    .SentOnBehalfOfName = "email@email.com"
    .Subject = cell & " Dashboard " & Format(Date, "DD-MMM-YY")
    .HTMLBody = strBody & vbNewLine & .HTMLBody
    .Attachment.Add strFileName
    .display
End With

End Sub

我还强烈建议您使用模块顶部的 Option Explicit 来确定您已声明所有变量(即cellstrBody)。

答案 2 :(得分:0)

尝试在附件中添加“ s”。应该看起来像 .attachments.add strFileName