我想在Excel中检索指向单元格的超链接,然后将此超链接粘贴到第三方应用中。单击超链接应该使用相应的工作簿加载Excel,并且应该使用光标选择该单元格。
超链接应该适用于与OneNote等Microsoft相关的产品;例如,如果我有一个工作簿“D:\ abc.xls”并且我想跳转到单元格C12,我会创建一个像“D:\ abc.xls#C12”这样的超链接。
这会奏效;但是,如果我将其粘贴到非Microsoft应用程序中,它只会打开Excel和工作簿,但单元格不会突出显示。我怎样才能让它发挥作用?
答案 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替换脚本)