vba - 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 循环,但我不确定这样做的最佳方式很抱歉。
解决方案
您可以使用该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
以模式作为参数的第一次调用将找到与提供的模式匹配的第一个文件。没有该模式的所有后续调用都将返回与该模式匹配的下一个文件。
推荐阅读
- java - QueryDsl - 如何使用排序和分组表创建内部连接
- c++ - 容器的 C++ 函数
- python - Python脚本将其输入中的位向右旋转两个位置
- javascript - 当我使用 env 文件时,当我阅读 vars 时我得到了未定义
- css - 如何使用 CSS 相对于标题定位我的元素
- flutter - 颤振:从颤动的列表视图中删除带有删除图标的小部件
- flutter - 在有像 1,00,000 这样的大量孩子的列表视图中使用 AutomaticKeepAliveClientMixin 是否很好?
- javascript - 如何在 Javascript/Vue 中创建双 IF 条件?
- javascript - 我想在 ReactJs 的 onClick 中有 2 种方法,但它不起作用
- reactjs - 在 React 中使用 Slick.js 与“infinite: true”,幻灯片被渲染多次