我必须每月通过电子邮件向数百人分发文件。我正在尝试编写一个可以自动执行此操作的宏。到目前为止,我已经创建了电子邮件,自动填写正文,主题行和收据。我需要能够将每个人文件自动附加到电子邮件中。文件名包含其帐号的最后6位数字。我得到一份报告,说明我需要将文件发送到的所有帐号。无论如何,我可以使用这6个数字来搜索文件,并使用VBA附加它?
例如:
说我的帐号是S0001234,S0005678,S0009012。我的文件名是" ABC - 001234"," DEF - 005678"和" GHI - 009012"。
我会手动引用整个文件名,但它们并不总是一致的。我可以使用文件的完整路径。我可以通过仅引用VBA中的这6位来以某种方式附加文件吗?例如,搜索包含这6位数的任何文件?任何帮助,将不胜感激。
答案 0 :(得分:1)
您可以使用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
变量的名称。
编辑:针对评论中提出的其他问题进行了更新。
如果您有多个文件,可以使用以下文件循环浏览文件夹(包含指定数字)中的每个文件。
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()
功能的工作原理,请参阅here。