超链接到单元格?
我想检索超链接到Excel中的单元格,然后将此超链接粘贴到第三方应用程序中。单击超链接应该将Excel加载到相应的工作簿,并且应该使用游标选择该单元格。超链接到单元格?
该超链接应该可以在Microsoft相关产品(如OneNote)中使用;例如,如果我有一个工作簿“D:\ abc.xls”,并且我想跳转到单元格C12,则会创建一个超链接,如“D:\ abc.xls#C12”。
这会工作;但是,如果我将其粘贴到非Microsoft应用程序中,它只是打开Excel和工作簿,但单元格未突出显示。我怎样才能使这个工作?
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时thatr。作为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调用,则不起作用,不知道它是否可以在第三方应用中使用。 (你会用helper exe替换脚本)
在您发布之前,我尝试了一些测试,例如打开Internet Explorer并粘贴链接D:\ abc.xls并打开文件,但是如果我粘贴了链接D:\ abc.xls#C12,它会给出错误信息。我想如果它在word和onenote中起作用,它也应该在IE中起作用,我想知道它为什么不打开单元格。感谢您的精心解释。 – 2010-05-05 16:53:28
这必须是由Office应用程序自动完成的事情,因为路径:abc.xls#C12
作为一个整体是一个潜在的有效文件名本身 - 如果您尝试从shell运行它,则会出现“路径未找到”错误。
如果单击在OneNote该链接,并期待在命令行中生成的Excel工作的情况下与在那里开设了只有“-embedding”开关这可能意味着OneNote中被解析出abc.xls
,通过其自动化功能启动然后Excel激活C12
。
我想如果你想要这个功能,你需要使用助手应用程序来做同样的事情,并使用像“C:\your_XL_loader.exe D:\abc.xls#C12
”这样的路径。
(如果第三方应用程序的荣誉窗口协议左撇子的小事,使your_XL_loader.exe自身的东西,如XXX://abc.xls#C12
关联)
第三方应用程序是一个Java应用程序,我不知道如何将_XL_loader.exe关联到超链接。此外,超链接的#C12部分将根据我想要突出显示的单元而变化。 – 2010-05-04 11:10:09
它只是一些注册表设置:http://msdn.microsoft.com/en-us/library/aa767914%28VS.85%29.aspx - 但它依赖于Java应用程序足够聪明,以了解自定义url协议处理程序或至少将它们传递给shell。 – 2010-05-04 11:22:11
对不起,我无法理解这个,_XL_loader.exe是什么?您看到我有一个将启动url请求的java应用程序,您是否希望我制作一个帮助器应用程序,以便我们接受此请求,然后将其传递给excel并以excel可理解的格式进行卓越,是吗? – 2010-05-05 12:27:00
据我所知,没有。 OneNote会做很多“有趣”的事情。我是OneNote 2003和2007的用户,以及自Office 95以来的Office开发人员。到目前为止,OneNote仍然让我惊讶于它的一些功能。我相信OneNote使用“发送键”导航到特定的单元格。 Excel维护打开工作簿时恢复的“最新当前位置”。 – AMissico 2010-05-04 10:08:07
可能有VBA宏提供此功能,因为它是一个常见的请求。 – AMissico 2010-05-04 10:10:42
@AMissico:我在“Word”中也尝试过,它也可以在那里使用!关于宏我已经做了一些Google搜索,但还没有找到类似的功能。 – 2010-05-04 10:13:40