【问题标题】:Create Hyperlink to Cell in Another Workbook/CSV VBA在另一个工作簿/CSV VBA 中创建指向单元格的超链接
【发布时间】:2023-03-05 23:07:01
【问题描述】:

我目前正在处理 WorkbookA 中的一个脚本,该脚本会通知另一个 Workbook (WorkbookB) 中的更改。如果用户希望看到更改,我想添加被带到该工作簿的功能。目前,我正在运行代码:

SelRangeA(iRow, 2) = "=HYPERLINK(""[C:\..\WorkbookB.csv]Sheet1!B4"",""CLICK HERE"")"

在电子表格中显示正确的超链接:Click Here 内容:

=HYPERLINK("[C:\..\WorkbookB.csv]Sheet1!B4","CLICK HERE")

但是,当我点击链接时,它会打开请求的工作簿并出现错误:

引用无效。

关于如何正确引用所需单元格的任何见解?谢谢!

【问题讨论】:

    标签: vba excel hyperlink reference


    【解决方案1】:

    CSV 文件不包含“Sheet1”。 “工作表”名称来源于文件名。

    所以你的代码需要是:

    =HYPERLINK("[C:\..\WorkbookB.csv]'" & filename & "'!B4","CLICK HERE")
    

    filename 已设置为 CSV 文件文件名的基本部分(即,在您的示例中,它需要等同于“WorkbookB”)。

    【讨论】:

    • 不错,错过了 csv 细节
    • 我会用这个答案来回复你和@cyboashu :P。这是有道理的,因为当我打开 csv 文件时查看它 - 第一个工作表名称是 WorkbookB(在本例中)。但是它仍然抛出 Reference is not valid。错误:/还有其他想法吗?
    • @TylerDickson - 声明=HYPERLINK("[L:\xyz\Temp\Temp1.csv]'Temp1'!B4") 对我有用。我假设您的 .. 只是隐藏了您正在使用的实际路径,而不是试图访问当前目录的父目录。当文件实际上 WorkbookB.csv 时,您是否收到错误,或者您是否正在使用另一个(真实)文件进行测试? (我在工作表名称周围添加了 ' 标记以避免名称中出现空格问题,但是,如果您的工作簿名称包含其他一些奇怪的字符,则它可能不是 Excel 用于工作表名称的名称。)
    • @TylerDickson - 例如“Temp1[1]Copy.csv”文件名将被加载到 Excel 中,工作表名称为“Temp1(1)Copy”,因为“[”和“]”不是工作表名称中的有效字符。
    • @TylerDickson - 据我所知,你不能只用一个 HYPERLINK 函数来做到这一点。 (如果使用 VBA,您可以打开您链接到的每个工作簿,确定哪个是第一个 [唯一] 工作表名称,然后修改超链接 - 但我看不出这将如何成为任何真正的最实用的解决方案-世界问题。)
    【解决方案2】:

    一种方法是在某些单元格发生更改时定义一个名称(公式->名称管理器)。例如,如果名称被定义为“changedcell”,您将按如下方式设置超链接:

    =HYPERLINK("[C:..\WorkbookB.csv#changedcell]","点击这里")

    如果有多个工作表,请确保名称的范围设置为完整工作簿。

    【讨论】:

    • 这可行,但 Workbook2 将大量更改为新文件,因此我认为我无法保持名称管理器的一致性
    【解决方案3】:

    如果链接在另一个工作簿中,并且您希望 Excel 在它尚未打开的情况下打开它,您需要指定地址和子地址(有点像 HTML 链接中的锚点):

    SelRangeA(iRow, 2) = "=HYPERLINK(""C:\Foo.xlsx#[C:\Foo.xlsx]Sheet1!A1"")"
    

    编辑:请注意,对于 .csv 文件,工作表名称将默认为打开时的文件名:

    SelRangeA(iRow, 2) = "=HYPERLINK(""C:\Foo.csv#[C:\Foo.csv]Foo!A1"")"
                                                             '^^^   
    

    【讨论】:

    • 我尝试了这个并且遇到了错误:您输入的名称不是有效的原因可能包括:...
    • @TylerDickson - 您需要使用实际的文档、工作表和单元格名称。正如 YowE3K 指出的那样,工作表名称将是 CSV 的文件名。
    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多