Vbscript 如何使用模式查找文件?

Vbscript 如何使用模式查找文件?,vbscript,outlook,Vbscript,Outlook,我有一个脚本,可以从文件夹中抓取一个文件并将其附加到电子邮件中 代码运行,但什么也没发生。我想这是因为strLocation是空的 下面是我试图获取的文件路径示例: “C:\Users\MChambers\Desktop\Pricing Reports\Pricing\u Report\u 201908121239 Formatted.xlsx” 选项显式 常量olMailItem=0 函数FindFirstFile(strDirPath、strPattern) 暗淡的结果 Dim objReg

我有一个脚本,可以从文件夹中抓取一个文件并将其附加到电子邮件中

代码运行,但什么也没发生。我想这是因为strLocation是空的

下面是我试图获取的文件路径示例:

“C:\Users\MChambers\Desktop\Pricing Reports\Pricing\u Report\u 201908121239 Formatted.xlsx”

选项显式
常量olMailItem=0
函数FindFirstFile(strDirPath、strPattern)
暗淡的结果
Dim objRegExp,OBJ匹配
设置objRegExp=newregexp
objRegExp.Pattern=strPattern
objRegExp.IgnoreCase=True
Dim objFso、OBJF文件夹、OBJF文件
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objFolder=objFSO.GetFolder(strDirPath)
对于objFolder.Files中的每个objFile
设置objMatches=objRegExp.Execute(objFile.Name)
如果objMatches.Count>0,则
strResult=objMatches(0).Value
退出
如果结束
下一个
如果Len(strResult)>0,则
如果正确(strDirPath,1)“\”则strDirPath=strDirPath&“\”
strResult=strDirPath&strResult
如果结束
FindFirstFile=strResult
端函数
Sub-SendBasicEmail()
Dim olApp:Set olApp=CreateObject(“Outlook.Application”)
Dim olEmail:Set olEmail=olApp.CreateItem(olMailItem)
模糊定位
暗模式
strPattern=“定价报告格式为.xlsx”
strLocation=FindFirstFile(“C:\Users\MChambers\Desktop\Pricing Reports\”,strPattern)
如果位置为“”,则
用电子邮件
.SentonBehalfName=“genericemail”
.Attachments.Add(strLocation)
.To=“myemail”
.Subject=“Subject”
.发送
以
如果结束
端接头
SendBasicEmail

更新:下面的解决方案是正确的。此外,我必须在我在上面代码中更新的文件末尾直接调用sub。

您使用的模式与您显然认为的不一样

strPattern = "Pricing_Report_*Formatted.xlsx"
您似乎期望上面的内容进行通配符匹配(即“Pricing_Report_uu”后跟任意数量的文本和“Formatted.xlsx”)。这不是正则表达式的工作方式<代码>*在正则表达式中表示“前一个表达式的零倍或更多倍”。字符
在正则表达式中也有特殊含义,即“除换行符以外的任何字符。因此,您的模式实际上将匹配字符串“Pricing_Report”,后跟任意数量的连续下划线、“Formatted”字符串、“Formatted”、除换行符以外的任何单个字符以及字符串“xlsx”

将模式更改为此

strPattern = "Pricing_Report_.*Formatted\.xlsx"
代码会做你想做的


有关VBScript中正则表达式的详细信息。

您是否确实尝试过调试代码?谢谢您的帮助。
strPattern = "Pricing_Report_.*Formatted\.xlsx"