【问题标题】:Hyperlink to a cell?超链接到单元格?
【发布时间】:2011-02-15 09:33:04
【问题描述】:

我想在 Excel 中检索一个单元格的超链接,然后将此超链接粘贴到第三方应用程序中。单击超链接应使用适当的工作簿加载 Excel,并且应使用光标选择该单元格。

超链接应该可以在 OneNote 等微软相关产品中使用;例如,如果我有一个工作簿“D:\abc.xls”并且我想跳转到单元格 C12,我会创建一个像“D:\abc.xls#C12”这样的超链接。

这会奏效;但是,如果我将其粘贴到非 Microsoft 应用程序中,它只会打开 Excel 和工作簿,但不会突出显示单元格。我怎样才能让它工作?

【问题讨论】:

  • 据我所知,没有。 OneNote 做了很多“有趣”的事情。我是 OneNote 2003 和 2007 的用户,并且是 Office 95 之前的 Office 开发人员。直到今天,OneNote 的某些功能仍然让我感到惊讶。我相信 OneNote 正在使用“发送键”导航到特定单元格。 Excel 保持打开工作簿时恢复的“最后当前位置”。
  • 可能有提供此功能的 VBA 宏,因为这是一个常见的请求。
  • @AMissico:我也在“Word”中尝试过同样的方法,它也可以在那里工作!关于宏,我做了一些谷歌搜索,但没有找到类似的功能。
  • @Kevin Boyd:当我第一次注意到 OneNote 这样做时,我使用了我所有的“技巧”来弄清楚如何做。一个小时后我放弃了,因为我还有其他事情要做。
  • HYPERLINK 工作表功能完全符合您的要求。也许 VBA 宏利用了这一点。

标签: excel excel-2007 hyperlink


【解决方案1】:

回复评论

这就是我的建议,例如将以下内容保存为 .reg 并导入它

REGEDIT4

[HKEY_CLASSES_ROOT\XLOPEN]
@="URL:Excel Opener"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\XLOPEN\shell\open\command]
@="CSCRIPT.EXE \"C:\\TEMP\\XLOPEN.VBS\" \"%1\""

这使得XLOPEN:// URL 协议处理程序在调用时将运行 XLOPEN.VBS。

将以下内容另存为C:\TEMP\XLOPEN.VBS

rem //get an argument like "XLOPEN://C:\null\text.xlsx/#F55" note extra /
dim arg:  arg = WScript.Arguments.item(0)
dim arr:  arr = (split(ucase(arg), "#"))
rem unmangle the url
dim filename: filename = replace(arr(0), "XLOPEN://", "")
if (right(filename, 1) = "/") then filename = mid(filename, 1, len(filename)-1)
dim xl:   set xl = createobject("excel.application")
xl.Workbooks.Open filename 
xl.range(arr(1)).select
xl.visible = true

现在如果你运行

xlopen://c:\null\test.xlsx#Q50

或使用

<a href="xlopen://c:\null\test.xlsx#Q50">bla bla</a>

Windows 将查找 xlopen:// 并将字符串 xlopen://c:\null\test.xlsx/#Q50 传递给 XLOPEN.VBS,它会提取文件路径 c:\null\test.xlsx1 并打开它,然后选择 # 之后的范围。

如果在浏览器中/从 shell/通过 windows API 调用,这可以工作,不知道它是否可以在 3rd 方应用程序中工作。 (您可以将脚本替换为辅助 exe)

【讨论】:

  • 在您发帖之前,我尝试进行一些测试,例如打开 Internet Explorer 并粘贴链接 D:\abc.xls 并打开文件,但是如果我粘贴链接 D:\abc。 xls#C12 它给出了一条错误消息。我想如果它可以在 word 和 onenote 中工作,它也应该在 IE 中工作,我想知道为什么它没有打开单元格。感谢您非常详尽的解释。
【解决方案2】:

这必须是 Office 应用程序自动完成的路径:abc.xls#C12 作为一个整体是一个潜在的有效文件名本身 - 如果您尝试从 shell 运行它,您将收到“找不到路径”错误.

如果您在 onenote 中单击该链接并查看命令行,则会打开生成的 excel 实例,其中只有“-embedding”开关,这可能意味着 onenote 正在解析 abc.xls,通过其自动化功能启动 excel然后激活C12

我认为,如果您想要该功能,则需要使用帮助应用程序执行相同的操作,并使用“C:\your_XL_loader.exe D:\abc.xls#C12”之类的路径。

(如果第 3 方应用程序支持 Windows 协议,那么让 your_XL_loader.exe 将其自身与 XXX://abc.xls#C12 之类的东西关联起来很简单)

【讨论】:

  • 第 3 方应用程序是 Java 应用程序,我不知道如何将 _XL_loader.exe 关联到超链接。此外,超链接的#C12 部分将根据我要突出显示的单元格而变化。
  • 它只是一些注册表设置:msdn.microsoft.com/en-us/library/aa767914%28VS.85%29.aspx - 但它依赖于足够智能的 java 应用程序来理解自定义 url 协议处理程序或至少将它们传递给 shell。
  • 对不起,我无法理解这个,_XL_loader.exe是什么?你看我有一个java应用程序会发起url请求,你想让我做一个帮助应用程序,我们接受这个请求,然后以excel可以理解的格式将它传递给excel,对吗?
猜你喜欢
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 2020-09-21
  • 1970-01-01
相关资源
最近更新 更多