Excel VBA:将文件附加到电子邮件没有完整的文件名称

我必须每月通过电子邮件向数百人发送文件。 我试图写一个macros,这将自动为我做这个。 到目前为止,我已经创build了电子邮件,自动填写正文,主题行和收件人。 我需要能够自动附加每个人的文件到电子邮件。 文件名称包含其帐号的最后6位数字。 我收到了所有需要发送文件的帐号的报告。 无论如何,我可以使用这6位数字search文件,并使用VBA附加?

例如:

说我的帐号是S0001234,S0005678,S0009012。 我的文件名是“ABC – 001234”,“DEF – 005678”和“GHI – 009012”。

我会手动引用整个文件名,但它们并不总是一致的。 我可以使用文件的完整path。 我可以通过在VBA中引用这6位数字来以某种方式附加文件吗? 例如,search任何包含这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将返回工作簿的全名(包括文件格式扩展名)。

strCustDigitsvariables的任意一侧的星号表示文件名可以包含数字的任何一侧; 它将返回在提供的文件夹中find的第一个文件,该文件夹的名称中包含strCustDigitsvariables。

编辑:更新了在评论中提出的其他问题。

如果您有多个文件,则可以使用下面的方法遍历文件夹中的每个文件(包含指定的数字)。

 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()函数如何工作的更多信息,请参阅此处 。