Как открыть файл .PDF с опцией подстановки через макрос Excel - PullRequest
0 голосов
/ 15 ноября 2018

Поскольку я очень плохо знаком с макросом Excel, я пытаюсь разработать код, который может открывать файл PDF. Но в моей системе есть несколько файлов PDF, которые создаются другой системой, поэтому имена этих файлов меняются день за днем. день и некоторые цифры тоже включены.

Например, «Отчет по процессу 151120183569844» выглядит следующим образом. Эти цифры меняются каждый день. Я пробовал добавить опцию WILDCARD, но она не работает. Как открыть этот PDF-файл только с частью имени файла?

     Sub Open_PDF()
    Dim pdfPath As String
    pdfPath ="D:\Reports\Process Report*" & ".pdf" 'I used wildcard instead "Process Report 151120183569844"'
Call OpenAnyFile(pdfPath)
End Sub

Function openAnyFile(strPath As String)
Set objShell = CreateObject("Shell.Application")
objShell.Open(strPath)
End Function

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Как указано в другом ответе , функция Dir с подстановочным знаком должна сработать.

Вот пример использования оригинального openAnyFileфункция.

Sub Open_PDF()
    Dim filePath As String, fileName As String

    filePath = "D:\Reports\"
    fileName = Dir(filePath & "Process Report*.pdf")

    If fileName <> "" Then
        openAnyFile filePath & fileName
    End If
End Sub

Function openAnyFile(strPath As String)
    Dim objShell As Object
    Set objShell = CreateObject("Shell.Application")
    objShell.Open (strPath)
End Function
0 голосов
/ 15 ноября 2018

Вы не можете открыть файл, используя подстановочный знак - это просто здравый смысл, что если более одного файла соответствует вашим критериям - какой файл вы хотите запрограммировать на открытие? Вы должны указать точное имя файла, чтобы открыть его.

если в целевом каталоге есть только один файл, вы можете использовать что-то вроде следующего кода, чтобы открыть его, независимо от его имени:

sFound = Dir(ActiveWorkbook.Path & "\Process Report*.xlsm") 

If sFound <> "" Then
    Workbooks.Open filename:= ActiveWorkbook.Path & "\" & sFound
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...