首页 > 解决方案 > Ms Access 使用通配符或循环获取文件名

问题描述

我正在使用 MS Access Forms,我正在尝试打开一个文件,但不知道如何打开文件,只知道部分名称。下面的例子有效

Private Sub Open_Email_Click()
  On Error GoTo Err_cmdExplore_Click
  Dim x As Long
  Dim strFileName As String
  strFileName = "C:\data\office\policy num\20180926 S Sales 112.32.msg"
  strApp = """C:\Program Files\Microsoft Office\Office15\Outlook.exe"""
  If InStr(strFileName, " ") > 0 Then strFileName = """" & strFileName & """"
  x = Shell(strApp & " /f " & strFileName)
Exit_cmdExplore_Click:
  Exit Sub

Err_cmdExplore_Click:
  MsgBox Err.Description
  Resume Exit_cmdExplore_Click
End Sub

如果我将 strFilename 更改为 strFileName = "C:\data\" & Me.Office & "\" & Me.nm & " " & Me.pol & "\" & "*"& " S Sales " & Me.amt & "*" & ".msg" 它包含 * 而不是将其用作通配符,则日期/数字可以是任何内容或其他格式,但始终是八个数字。我尝试在数字上使用 while 循环,但我不确定这样做的最佳方式很抱歉。

标签: vbams-access

解决方案


您可以使用该Dir函数遍历与字符串模式匹配的所有文件。

strApp = """C:\Program Files\Microsoft Office\Office15\Outlook.exe""" 
Dim strFilePattern As String
strFilePattern ="C:\data\" & Me.Office & "\" & Me.nm & " " & Me.pol & "\" & "*"& " S Sales " & Me.amt & "*" & ".msg"

Dim strFileName As String
strFileName = Dir(strFilePattern)
Do While Not strFileName = vbNullString
    If InStr(strFileName, " ") > 0 Then strFileName = """" & strFileName & """" 
    x = Shell(strApp & " /f " & strFileName) 
    strFileName = Dir
Loop

Dir以模式作为参数的第一次调用将找到与提供的模式匹配的第一个文件。没有该模式的所有后续调用都将返回与该模式匹配的下一个文件。


推荐阅读