[英]Excel VBA: attach files to email without full file name
我必须每月通过电子邮件向数百人分发文件。 我正在尝试编写一个宏,该宏将自动为我执行此操作。 到目前为止,我已经可以创建电子邮件,自动填写正文,主题行和收件人。 我需要能够自动将每个人的文件附加到电子邮件中。 文件名包含其帐号的后6位数字。 我得到了将文件发送到的所有帐号的报告。 无论如何,我可以使用这6位数字来搜索文件,并使用VBA附加它吗?
例如:
说我的帐号是S0001234,S0005678,S0009012。 我的文件名是“ ABC-001234”,“ DEF-005678”和“ GHI-009012”。
我会手动引用整个文件名,但它们始终保持一致。 我可以使用文件的完整路径。 我可以仅通过引用VBA中的这6位数字以某种方式附加文件吗? 例如,搜索包含这6位数字的任何文件吗? 任何帮助,将不胜感激。
您可以在VBA中使用Dir()
函数来实现所需的功能。
Sub getFileName()
Dim strFileName As String
Dim strCustDigits As String
strCustDigits = "123456"
strFileName = Dir("C:\Users\lturner\Documents\*" & strCustDigits & "*")
End Sub
strFileName
将返回工作簿的全名(包括文件格式扩展名)。
strCustDigits
变量的strCustDigits
的星号表示文件名可以在数字的任何一边都可以; 它将返回在提供的文件夹中找到的第一个文件,该文件的名称中包含strCustDigits
变量。
编辑:更新为评论中询问的其他问题。
如果您有多个文件,则可以使用以下方法遍历文件夹(包含指定数字)中的每个文件。
Sub getFileNameLoop()
Dim strFileName As String, strCustDigits As String
strCustDigits = "123456"
strFileName = Dir("C:\Users\lturner\Documents\*" & strCustDigits & "*")
Do While Len(strFileName) > 0
' Perform action with file which contains the provided digits
Debug.Print strFileName
strFileName = Dir
Loop
End Sub
有关Dir()
函数如何工作的更多信息,请参见此处 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.