【问题标题】:How to open a .PDF file with wild card option via excel macro如何通过 excel 宏打开带有通配符选项的 .PDF 文件
【发布时间】:2018-11-15 03:50:14
【问题描述】:

由于我对 excel 宏非常陌生,我正在尝试开发一个能够打开 PDF 文件的代码。但是我的系统中有一些 PDF 文件是由另一个系统生成的,因此这些文件的名称每天都会更改天和一些数字也包括在内。

例如,“Process Report 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

【问题讨论】:

标签: excel vba pdf


【解决方案1】:

正如another answer 中指出的那样,带有通配符的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

【讨论】:

  • 是的,它成功了。非常感谢您的帮助。
  • 太棒了!很高兴能提供帮助。
【解决方案2】:

您无法使用通配符打开文件 - 这只是常识,如果多个文件与您的条件匹配怎么办 - 您要编程打开哪个文件?您必须指定确切的文件名才能打开它。

如果目标目录中只有一个文件,你可以使用类似下面的代码来打开它,不管它的名字是什么:

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

If sFound <> "" Then
    Workbooks.Open filename:= ActiveWorkbook.Path & "\" & sFound
End If

【讨论】:

  • 非常感谢您的回答,但我的问题是它不是 excel 文件,它是 PDF 文件。如果是 excel 文件,我知道如何通过通配符打开,但我不知道如何它与 PDF 文件相关联。
猜你喜欢
  • 1970-01-01
  • 2011-06-28
  • 2019-05-13
  • 1970-01-01
  • 2012-07-10
  • 2015-08-28
  • 2015-10-06
  • 1970-01-01
  • 2017-03-24
相关资源
最近更新 更多