繁体   English   中英

Excel VBA:不带完整文件名的将文件附加到电子邮件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM