gpt4 book ai didi

vba - 如何在 VBA 中使用唯一标识符引用 Excel 链接

转载 作者:行者123 更新时间:2023-12-02 04:37:22 24 4
gpt4 key购买 nike

如何使用在文件打开时不会更改的唯一标识符在 VBA 中引用外部工作簿?当包含完整文件路径并且没有打开同名文件时,它可以正常工作。但是,当打开文件时,带有文件路径的完整表单不起作用,并且单独的文件名不起作用。

我想创建一个更新子来更新所有引用,但如果电子表格打开,这会弄乱(请参阅下面的第 2 点)。

以下是我认为这是可能的一些原因:

  1. 手动链接更新菜单中似乎只有文件名可供引用;
  2. 此外,人们无法打开两个同名的工作簿,因此,如果您打开源链接,则单元格引用将从文件路径更改为文件名(正是这一点导致了问题。

这是我当前拥有的代码 updCellRef 是对文件路径的单元格引用(我只想使用文件名):

    Sub updateValues(updCellRef)
updFilePath = ActiveWorkbook.Sheets("INPUTS").Range(updCellRef).Value
ActiveWorkbook.updateLink Name:=updFilePath, Type:=xlExcelLinks
End Sub

为了澄清这个问题,当我使用上述函数更新值时出现了这个问题,但是当源电子表格打开时,它仅由其文件名引用。当它关闭时,它由其完整文件路径引用。

我使用的是 Excel Professional 2010 v14 和 VBA v7.0

注意:我不想使用任何其他软件,包括 Power Query,因为没有管理员权限就无法安装它。

最佳答案

这是引用链接的另一种方式。

Dim linkName As String, fileName As String, i As Integer

For Each link In ActiveWorkbook.LinkSources
On Error GoTo tryName
ActiveWorkbook.UpdateLink linkName

If False Then
tryName:
i = InStrRev(linkName, "\") ' 0 if no "\" found
If i > 0 Then
On Error Resume Next ' to ignore error if fileName does not work too
fileName = Mid(linkName, i + 1)
ActiveWorkbook.UpdateLink fileName
End If
End If
On Error GoTo 0 ' reset the error handling
Next

但是 link 和以前一样是文件路径的字符串

更新

您可以发布“数据”>“编辑链接”的屏幕截图以使其更加清晰吗?

在我的测试中,前 3 个链接没问题,但最后一个有问题。

关于vba - 如何在 VBA 中使用唯一标识符引用 Excel 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com