我有一个宏用于将自动生成的文件每天附加到电子邮件中。
文件名必须是包含日期和时间的特定格式,并且由于这是自动的,因此只会固有日期(无需手动检查文件)。
.Attachments.Add
和format(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")
答案 0 :(得分:1)
正如@Kostas建议的那样,您可以通过带有Dir
function的glob查找文件。请注意,它只返回文件名,没有路径。
当没有或多个文件与模式匹配时,请处理此案例。 (我的代码在这些情况下会产生错误;错误代码来自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)
答案 1 :(得分:0)
首先构建文件路径,测试它并在它有效时附加它。正如评论中所建议的那样,您需要提供具体的文件名,不允许使用通配符。
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