谢谢你所有的帮助人:) 代码现在正在运行。
我仍然对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
我不知道为什么会这样,但它有:) 一个超级快乐的人在这里。
答案 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 来确定您已声明所有变量(即cell
和strBody
)。
答案 2 :(得分:0)
尝试在附件中添加“ s”。应该看起来像 .attachments.add strFileName