使用指向相关文件的超链接填充excel文档

时间:2016-05-23 15:20:43

标签: excel excel-vba vba

我目前使用电子表格,我需要手动超链接每行中的4个单独文件,其中包含用于引用的重要信息(3个是PDF,1个是Excel电子表格)。每行都包含特定订单号的信息,这是我需要超链接的每个文件的一部分。我想要超链接到我的Excel工作表的4种文档中的每一种都被打包到4个文件夹path1,path2,path3和path4中,并且它们在电子表格中有自己的列。每个文件夹只包含一个带有订单号的文件。

我尝试在excel中自动执行此操作,使用4列中的这些公式:

val searchManager = Search.getSearchManager(cache)
searchManager.buildQueryBuilderForClass(Class.getClass).get()

公式引用单元格C2,它是订单号,它用该数字填充路径,这对于一致命名的文件非常有用。如果没有订单号,它也会将单元格留空,因为它有时会发生,我需要的功能是在没有任何东西的情况下不要惊慌失措。当我遇到文件名时会出现问题,这些文件名最后会有其他内容,例如日期。我的公式无法超链接文件,除非我给它确切的路径开始。

我想知道是否有人知道excel是否能够在只给出部分文件名的情况下在文件夹中找到文件。

如果在excel中没有办法做到这一点,我希望有可能有办法用VBA做到这一点。我做了一些搜索并在VBA中找到了Application.FileSearch功能,但它说“对象不支持此操作”。当我试着打电话的时候。 (这是一个简单的谷歌搜索,似乎是由于Application.FileSearch在excel 2007中不存在而导致的错误,但是我正在运行2013年,所以我不确定为什么会这样)

我对VBA有一个非常新手的理解,所以我试图慢慢学习。如果有人可以帮我提出一个代码,允许我引用一个单元格,并找到包含该名称的文件,以便我可以将该路径打印到另一个单元格,我将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效(或者至少指出你要研究的路径)。

Sub HyperlinkFiles()
    Dim strFile As String

    strFile = Dir$("J:\path1\*" & Sheet1.Range("C2") & "*.pdf")
    If (Len(strFile) > 1) Then
        Sheet1.Range("k2").Hyperlinks.Add Sheet1.Range("k2"), strFile
    Else
        'No file was found that match so do nothing
        'However, you could link to the folder to make manually searching easier
        'Sheet1.Range("k2").Hyperlinks.Add Sheet1.Range("k2"), "J:\Path1"
    End If

    strFile = Dir$("J:\path2\*" & Sheet1.Range("C2") & "*.pdf")
    If (Len(strFile) > 1) Then
        Sheet1.Range("L2").Hyperlinks.Add Sheet1.Range("L2"), strFile
    Else
        'No file was found that match so do nothing
    End If

    strFile = Dir$("J:\path3\*" & Sheet1.Range("C2") & "*.xlsx")
    If (Len(strFile) > 1) Then
        Sheet1.Range("M2").Hyperlinks.Add Sheet1.Range("M2"), strFile
    Else
        'No file was found that match so do nothing
    End If

End Sub

使用此代码的警告是当有2个或更多文件与搜索模式匹配时。例如,假设单元格C2包含Stack,您有2个名为stackoverflow.pdfstackexchange.pdf的文件。哪个"堆栈"你想要文件吗?