是否可以创建一个宏来提取选定单元格中的文本,将其添加到文件路径,然后使该单元格成为指向指定文件的超链接?

时间:2019-04-03 10:49:52

标签: excel vba

除了简单的录制宏之外,我对在Excel中使用VBA完全陌生。我目前正在尝试创建一个宏,以根据其内容自动将单元格链接到相应的文件,例如:单元格包含订单号“ F003910”,并且订单位于“ L:\ Docs \ Expenditure”中\ Purchase Orders \ F0039XX'。

我希望将其设置为复制单元格的内容,并创建一个指向文件路径的超链接,并在其末尾粘贴单元格的文本,这将与文件名匹配。

这是针对Excel 365的。我试图记录宏并复制和粘贴作为宏的一部分,但是它只是保存了第一次创建宏时的文本,而不是从选定的单元格中提取。

我意识到这甚至是不可能的,但是任何建议将不胜感激。

2 个答案:

答案 0 :(得分:3)

如果您输入e。 G。 B4单元格中的“ F003910”,则在单元格下方手动输入的公式可能如下所示:

=HYPERLINK("L:\Docs\Expenditure\Purchase Orders\" & LEFT(B4,5) & "XX";"link")

结果看起来像这样(在德语Excel中): Screenshot2

VBA中的示例:

Private Sub TestMyHyperlink
    Dim ws as Worksheet
    Dim myCell as Range

    Set ws = ActiveSheet
    For each myCell in ws.Range("B4:B100")
        myCell.FormulaR1C1 = _
        "=HYPERLINK(""L:\Docs\Expenditure\Purchase Orders\"" & _
        LEFT(RC[-1],5) & ""XX"", _
        ""link"")"
    Next myCell
End Sub

答案 1 :(得分:0)

以下代码从Sheet1.range(“ A1”)获取值,创建路径并在Sheet1.range(“ B1”)中导入超链接。在这两种方法中,请不要忘记更改文件扩展名。

VBA代码:

Option Explicit

Sub test()

    Dim cValue As String, path As String

    With ThisWorkbook.Worksheets("Sheet1")

        cValue = .Range("A1").Value
        path = "L:\Docs\Expenditure\Purchase Orders\F0039XX\" & cValue & ".xls" '

        .Hyperlinks.Add Anchor:=.Range("B1"), Address:=path, TextToDisplay:=path

    End With

End Sub

Excel公式:

=HYPERLINK("L:\Docs\Expenditure\Purchase Orders\F0039XX\" & A1 & ".xls",A1 & " Location")