Excel 超链接到单元格?

Excel 超链接到单元格?,excel,excel-2007,hyperlink,Excel,Excel 2007,Hyperlink,我想检索Excel中单元格的超链接,然后将此超链接粘贴到第三方应用程序中。单击超链接将加载带有相应工作簿的Excel,并应使用光标选择该单元格 超链接应适用于与Microsoft相关的产品,如OneNote;例如,如果我有一个工作簿“D:\abc.xls”,我想跳转到单元格C12,我会创建一个类似“D:\abc.xls#C12”的超链接 这是可行的;但是,如果我将其粘贴到非Microsoft应用程序中,它只会打开Excel和工作簿,但单元格不会高亮显示。如何使其工作?这必须由Office应用程序

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

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


这是可行的;但是,如果我将其粘贴到非Microsoft应用程序中,它只会打开Excel和工作簿,但单元格不会高亮显示。如何使其工作?

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

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

我认为,如果你想要这个功能,你需要使用助手应用程序做同样的事情,并使用类似“
C:\your\u XL\u loader.exe D:\abc.xls\C12
”的路径

(如果第三方应用程序尊重windows协议处理程序,那么让您的_XL_loader.exe将其自身与类似于
XXX://abc.xls#C12
的内容相关联就很简单了)

重新评论

这就是我的建议,例如,将以下内容保存为.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.VBS的
XLOPEN://
URL协议处理程序

将以下内容另存为
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

或使用

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


如果在浏览器中/从shell中/通过windows API调用,则此功能可以工作,不知道它是否可以在第三方应用程序中工作。(您可以用helper exe替换脚本)

据我所知,没有。OneNote做了很多“有趣”的事情。我是OneNote 2003和2007的用户,从1995年开始担任Office开发者。直到今天,OneNote的一些功能仍然让我感到惊讶。我相信OneNote正在使用“发送密钥”导航到特定单元格。Excel保留在打开工作簿时还原的“上一个当前位置”。可能有VBA宏提供此功能,因为这是一个常见的请求。@AMissico:我在“Word”中也尝试过同样的方法,而且在那里也有效!关于宏,我在谷歌上搜索了一下,但没有找到类似的功能。@Kevin Boyd:当我第一次注意到OneNote这样做时,我用了所有的“技巧”来弄清楚是怎么做的。一个小时后我放弃了,因为我还有其他事情要做。超链接工作表函数正是你想要的。可能VBA宏利用了这一点。第三方应用程序是Java应用程序,我不知道如何将_XL_loader.exe与超链接关联。此外,超链接的#C12部分将根据我要突出显示的单元格而改变。这只是一些注册表设置:-但它依赖于java应用程序足够聪明,可以理解自定义url协议处理程序,或者至少将它们传递给shell。很抱歉,我搞不懂这一点,什么是#XL#u loader.exe?你看,我有一个java应用程序可以启动url请求,你想让我制作一个助手应用程序,我们接受这个请求,然后以excel可以理解的格式将其传递给excel,对吗?在你发表文章之前,我试着做了一些测试,比如打开internet explorer并粘贴链接D:\abc.xls,然后它打开了文件,但是,如果我粘贴了链接D:\abc.xls#C12,则会显示一条错误消息。我想如果它在word和onenote中工作,它也应该在IE中工作,我想知道为什么它不能打开手机。谢谢你的详细解释。