试图添加一个附件到Excel中只有文件名的第一部分已知的电子邮件

我有一个macros,我正在使用自动生成的文件附加到每天的电子邮件。

文件名必须是包含date和时间的特定格式,因为这是自动的,只有固有的date(不需要手动检查文件)。

  • 我正在使用.Attachments.Addformat(date... etc.)来获取文件名的第二部分。
  • 第一部分是一个不改变的数字和单词
  • 但是第三部分(下面显示为“ *.csv ”)是导致问题的位。

我试图用*代替我在论坛上看到的,但是在那个例子中它似乎起作用的地方它并不适合我。 我错过了什么吗?

 .Attachments.Add ("G:\AML, CFT & Sanctions\Sanctions\KYC6 Person & Organsation Reports\" & Format(Date, "yyyy") & "\" & Format(Date, "mmmm") & "\65436546_Test_" & Format(Date, "yyyymmdd") & "*.csv") 

正如@Kostas所build议的那样,你可以通过使用Dir函数的glob来查找文件。 请注意,它只返回文件名,没有path。

当没有或多于一个文件匹配模式时,处理这种情况。 (我的代码在这些情况下会产生错误;错误代码来自http://www.halfile.com/vb.html 。)

 Dim date_ As Date, pattern, dir_, filename As String: date_ = Date dir_ = "C:\Users\Ivan\Documents\test & test\" & _ Format(date_, "yyyy\\mmmm\\") pattern = "65436546_Test_" & Format(date_,"yyyymmdd") & "*.csv" filename = Dir(dir_ & pattern) If Len(filename) = 0 Then Error 53 'File not found If Len(Dir()) <> 0 Then Error 58 'More than one matching file <email>.Attachments.Add(dir_ & filename) 

首先build立文件path,testing它并附加它,如果它是有效的。 正如评论中所build议的,你需要提供一个具体的文件名,通配符是不允许的。

 Dim path_ As String, name_ As String, file_ As String path_ = "C:\Some folder\" name_ = "*.csv" file_ = Dir(strPath & name_) If Len(Dir(path_ & file_)) > 0 Then .Attachments.Add path_ & file_ End If