在指定的工作表vba中列出链接

时间:2017-03-24 19:59:15

标签: excel vba excel-vba

我对以下内容进行了修改,因此链接会进入我选择的一张表中,但是我会收到错误,我很想知道是否有办法设置我选择的ws。我在网上看了,找不到解决办法。

Sub ListLinks()
Dim wb As Workbook
Set wb = Application.ActiveWorkbook
If Not IsEmpty(wb.LinkSources(xlExcelLinks)) Then
    wb.Sheets.Add  '  Amended this with my chosen sheet I want the links to go and I get errors after, declaring my variables, i.e ws as worksheet and the range
    xIndex = 1
    For Each link In wb.LinkSources(xlExcelLinks)
        Application.ActiveSheet.Cells(xIndex, 1).Value = link
        xIndex = xIndex + 1
    Next link
End If
End Sub

我有一个工作簿,它有几个工作表,有两个外部链接指向两个不同的工作簿。

我无法使用左或右函数从单元格的VLOOKUP FORMULA中提取路径文件名到我选择的单元格,让我们以一个链接为例,让我们说我想将公式作为文本打印到单元格B1中,然后说C1将具有我想要将其更改为最新文件的路径。使用VBA更改文件。一旦更新了链接,B1和C1应该=相同的文件和路径位置。

如果我能做到这一点,那么我会试着看看是否可以将它应用到第二个链接。

有没有办法将单元格的公式打印为文本,然后使用左,中或右提取路径和文件位置。

我考虑过上面的vba代码,但它添加了一个新工作表,我无法将链接放入我选择的工作表中。我收到一个错误。我希望尽可能少地使用代码。我是VBA的新手,想法和帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您希望写入现有工作表,而不是添加工作表,则只需在书写行上指定工作表。因此,首先删除行wb.Sheets.Add。然后修改写入行 - 将ActiveSheet更改为Sheets("your sheet name")。在这个例子中,我已经指定了一个名为“三明治”的现有工作表:

Sub ListLinks()
    Dim wb As Workbook
    Set wb = Application.ActiveWorkbook
    If Not IsEmpty(wb.LinkSources(xlExcelLinks)) Then
        xIndex = 1
        For Each link In wb.LinkSources(xlExcelLinks)
            Application.Sheets("sandwich").Cells(xIndex, 1).Value = link
            xIndex = xIndex + 1
        Next link
    End If
End Sub

其他: 如果您希望从公式/链接获取路径,如果您使用Excel 2013或更高版本(在此示例中,您的链接位于单元格A1中),则无法使用VBA,您可以使用此类公式:

=SUBSTITUTE(SUBSTITUTE(MID(FORMULATEXT(A1),FIND("'",FORMULATEXT(A1),1)+1,(FIND("]",FORMULATEXT(A1),1)-FIND("'",FORMULATEXT(A1),1)-1)),"''","'"),"[","")