【问题标题】:Open pdf file from a different directory/folder从不同的目录/文件夹打开 pdf 文件
【发布时间】:2015-08-21 17:48:43
【问题描述】:

我正在使用 Microsoft Office Professional Plus 2013 中的 Excel 版本。

使用 Excel VBA,我想启动 Adob​​e Reader XI 并打开另一个文件夹中的 pdf 文件。

如果 Excel 文件和 Adob​​e Reader 文件在同一个文件夹中,我可以成功打开 Adob​​e Reader 文件。这是有效的代码:

Dim ABCfilename As String
Dim returnAcrobatfile As Variant
ABCfilename = "ABC.pdf"
acrobatFile = ThisWorkbook.Path & Application.PathSeparator & ABCfilename
returnAcrobatfile = Shell("C:\Program Files\Adobe\Reader _
11.0\Reader\AcroRd32.exe " & acrobatFile, vbNormalFocus)

但是,我想启动 Adob​​e Reader 并对其进行编程以打开位于不同文件夹中的 pdf 文件。

我的 Excel 文件位于名为 C:\Customers\Pricing\ 的文件夹中

我的 Adob​​e 文件位于名为 Z:\XYZ Company\ 的文件夹中

我应该如何修改以 returnAcrobatfile 开头的代码行,以便它打开位于 Z:\XYZ Company 的 pdf 文件?

【问题讨论】:

  • ThisWorkbook.Path改成正确的路径。
  • 你应该把以acrobatFile开头的那行代码改成正确的路径。
  • 感谢共产国际和凯文。效果很好!

标签: excel vba pdf


【解决方案1】:

见下面的代码。

Sub PDF_Picker()

Dim Acrobatfile         As String

Acrobatfile = GetFile
Runit (Acrobatfile)

End Sub

Sub Runit(FileName As String)
   Dim Shex As Object
   Dim tgtfile As String
   Set Shex = CreateObject("Shell.Application")
   tgtfile = FileName
   Shex.Open (tgtfile)
End Sub

Function GetFile()

    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = ActiveWorkbook.Path & Application.PathSeparator
        .AllowMultiSelect = False
        .Title = "Select PDF Files"
        .Filters.Clear
        .Filters.Add "Adobe PDF Files", "*.pdf"
        .InitialView = msoFileDialogViewDetails
        If .Show = True Then
            GetFile = .SelectedItems(1)
        Else
            GetFile = False
        End If
    End With

End Function
  • 如果您的客户端将 Acrobat 安装在与硬编码路径不同的位置,您的解决方案将失败。我对其进行了调整以使其更加健壮并使用 PDF 的默认应用程序选择。顺便说一句,如果您在函数 GetFile 中删除/删除过滤器:(.Filters.Add "Adobe PDF Files", "*.pdf") 您可以使用它来打开任何文件,甚至是我刚刚测试过的 mp3。
  • 感谢tigeravatar,我从这篇文章中根据您的目的调整了他的功能: Importing folder to Excel (FileDialogFolderPicker) using VBA
  • 感谢 user1302114 改编自这篇文章的 RunIt Sub:How can Excel VBA open file using default application

【讨论】:

  • 非常感谢 gokool108。我也试试你的方法。
猜你喜欢
  • 1970-01-01
  • 2013-10-24
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 2014-08-25
  • 2012-09-25
相关资源
最近更新 更多