超链接到一个单元格?

时间:2010-05-04 09:58:48

标签: excel excel-2007 hyperlink

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

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

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

2 个答案:

答案 0 :(得分:1)

这必须是Office应用程序自动完成的路径:abc.xls#C12作为一个整体是一个潜在有效的文件名本身 - 如果你试图从shell运行它你会得到一个“路径未找到“错误。

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

我认为如果你想要这个功能,你需要使用帮助应用程序做同样的事情,并使用像“C:\your_XL_loader.exe D:\abc.xls#C12”这样的路径。

(如果第三方应用程序尊重Windows协议,则可以让you_XL_loader.exe将自己与XXX://abc.xls#C12之类的内容联系起来

答案 1 :(得分:1)

RE评论

这就是我的建议,例如将以下内容另存为.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调用,这是有效的,不知道它是否适用于第三方应用程序。 (您将使用帮助程序exe替换脚本)