MS Access Получить имя файла с подстановочными знаками или циклом - PullRequest
0 голосов
/ 28 сентября 2018

Я использую 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

Если я изменю имя strFile на strFileName = "C:\data\" & Me.Office & "\" & Me.nm & " " & Me.pol & "\" & "*"& " S Sales " & Me.amt & "*" & ".msg" Оно включает * вместо использования его в качестве подстановочного знака, дата / числа могут быть любым или в другом формате, но всегда с восемью числами.Я пытался использовать цикл while для чисел, но я не уверен, что лучший способ сделать это извините.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Итак, давайте немного перестроим вопрос.Представьте, что у вас есть следующие 5 файлов в данной папке:

  • A: \ peter.msg
  • A: \ bstack.msg
  • A: \coverflow.msg
  • A: \ heter.msg
  • A: \ beter.msg

, и вам необходимо найти файлы, соответствующие "A:\*eter.msg"и распечатать их.Для этого вам нужно использовать ключевое слово Like:

Sub TestMe()

    Dim someNames As Variant
    someNames = Array("A:\peter.msg", "A:\bstack.msg", _
                "A:\coverflow.msg", "A:\heter.msg", "A:\beter.msg")

    Dim cnt As Long
    For cnt = LBound(someNames) To UBound(someNames)
        If someNames(cnt) Like "A:\*eter.msg" Then
            Debug.Print someNames(cnt)
        End If
    Next

End Sub

Проходить по файлам в папке с помощью VBA?

0 голосов
/ 28 сентября 2018

Вы можете использовать функцию 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 с шаблоном в качестве параметранайдет первый файл, который соответствует предоставленному шаблону.Все последующие вызовы без шаблона вернут следующий файл, соответствующий шаблону.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...