如何使用VBA代码打开相关文件路径的pdf文件?

时间:2018-04-01 17:52:51

标签: excel-vba pdf vba excel

我正在尝试查找命令并更正编码以打开包含活动excel文件的相对文件路径的PDF文件。下面的代码可以很好地作为直接链接到文件的链接。但是,我只需要这段代码就可以找到与打开的excel文件位于同一文件中的PDF文件并相应地打开。

Sub OpeningPDF()
    'ThisWorkbook.FollowHyperlink "C:\Users\Michael\My Documents\totals\copy.pdf"
End Sub

我尝试过与ThisWorkbook.path合作,但我没有尝试过任何有效或似乎过时的内容。对此事的任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我找到了两个解决方案:

The first one正在使用内置的 $userchild->setAttributes($rows, TRUE); 功能。这应该自动解析相对路径(相对于应用程序当前工作目录):

Shell()

The second one使用Public Sub StartExeWithArgument() Dim strFilename As String strFilename = "../folder/file.pdf" Call Shell(strFilename, vbNormalFocus) End Sub COM对象,基本上与第一个对象相同。

Shell.Application

答案 1 :(得分:0)

如果您从ThisWorkbook.Path和相对参考开始,然后在相对参考中为每"..\"修剪一个图层,您将获得路径。

Function RelativeToAbsolutePath(ByVal RelativePath As String) AS String
    Dim TempStart AS String, TempEnd AS String
    TempStart = ThisWorkbook.Path
    TempEnd = RelativePath
    If Left(TempEnd,1) = "\" Then TempEnd = Mid(TempEnd,1)

    RelativeToAbsolutePath = ""
    On Error GoTo FuncErr

    While Left(TempEnd,3)="..\" AND InStrRev(TempStart,"\")>0
        TempStart = Left(TempStart,InStrRev(TempStart,"\")-1) 'Remove 1 layer from Workbook path
        TempEnd = Mid(TempEnd,4) 'Remove 1 instance of "..\"
    Wend

    RelativeToAbsolutePath = TempStart & "\" & TempEnd 'Stitch it all together
FuncErr: 'You may want a DIR(..) check to see if the file actually exists?
End Function

然后您可以使用Shell

打开它