目标:
我想创建一个链接,在 Excel online 中打开 Excel 工作表的指定行或单元格,以帮助用户在数千行中查找特定条目,而无需进行筛选、搜索或无休止滚动。当然,Excel 不是我们工作的正确工具;但是,我没有能力改变这一点……
关联:
以下链接的结构可以在 Excel 在线中打开 Excel 工作表,但位于随机位置:
https://company.sharepoint.com/teams/folder/folder/folder/filename.xlsm?web=1
以下链接可用于在指定的单元格中打开工作表,但不能在浏览器中打开:(从此问题回答:使用超链接指定要为 Microsoft Excel 工作簿打开的特定工作表或者通过 URL 链接到 Excel 表中的行或单元格)
https://company.sharepoint.com/teams/folder/folder/folder/filename.xlsm#sheetname!a22
问题:
有没有办法修改链接中的查询以同时执行这两项操作?
答案1
链接至范围
这链接至此范围功能可能会满足您的要求。我能够用此功能链接到特定单元格,并且 Excel 文件在浏览器中打开,而不是在应用程序中打开。
脚步:
将会生成一个您可以使用的链接。我的看起来像这样(这是一个空文件,它不是一个真正的链接,所以我不担心使用真实值进行演示):
https://company.sharepoint.com/teams/folder/folder/folder/Test.xlsx?d=wb9d2ce64a09342c38047efa17f828458&csf=1&web=1&e=2emtWu&nav=MTJfQTJfezQ1QTc5MTc1LUU1QzItNEQxQS1CMjcyLTIzMDgzMUQ2NUY1Rn0
URL 中查询字符串的参数如下所示:
- d
- 脑脊液
- 网络
- 埃
- 导航
手动操作 URL
我发现本网站解释用法。
E. 每个分享链接后面默认添加此参数部分。
- d= xxxx – 这将有助于创建一个唯一的 URL,以允许在浏览器中打开文件。如果删除此参数,您将收到下载请求。仅当您与具有现有访问权限的人共享时才会添加此参数。
- Csf=1 – 与具有现有访问权限的人共享时添加
- Web=1 – 在浏览器中打开文件
- E= xxxx – 这个参数的用途尚不清楚;如果删除它,共享将以相同的方式工作。
减少 URL
d
我用我的 URL 进行了测试,删除和之后我仍然能够链接到指定的单元格e
,所以您甚至可能不需要它们。csf
和web
总是= 1
。
因此 URL 可以简化为:
https://company.sharepoint.com/teams/folder/folder/folder/Test.xlsx?csf=1&web=1&nav=MTJfQTJfezQ1QTc5MTc1LUU1QzItNEQxQS1CMjcyLTIzMDgzMUQ2NUY1Rn0
导航参数
现在我们需要弄清楚nav
。我的价值是MTJfQTJfezQ1QTc5MTc1LUU1QzItNEQxQS1CMjcyLTIzMDgzMUQ2NUY1Rn0
。
Base64 解码
我意识到这可能是Base64编码所以我解码它,结果是12_A2_{45A79175-E5C2-4D1A-B272-230831D65F5F}
。这很有希望,就像A2
我链接到的单元格一样。对于同一文件,其他值保持不变。
瞧,我生成了另一个指向单元格的链接A3
。生成的 URL 给出:
- 导航 =
MTJfQTNfezQ1QTc5MTc1LUU1QzItNEQxQS1CMjcyLTIzMDgzMUQ2NUY1Rn0
- 解码后为
12_A3_{45A79175-E5C2-4D1A-B272-230831D65F5F}
这使我得到了我想要链接到的单元格A3
。
为了更彻底地进行测试,我创建了第二个新文件并进行了测试。我还尝试了第二张表。
对于不同部分12_A3_{45A79175-E5C2-4D1A-B272-230831D65F5F}
:
12
= 在各个文件中保持不变,因此应该是恒定的A3
= 根据您想要的单元格进行更改{45A79175-E5C2-4D1A-B272-230831D65F5F}
= 根据表格进行更改
结论
只要您第一次就能生成链接(或为您想要链接到的多个工作表生成链接),您就可以手动创建此 URL 以获取值nav
并从那里更改单元格和/或工作表。您还需要进行 Base64 编码。
答案2
代替:
=HYPERLINK("https://company.sharepoint.com/teams/folder/folder/folder/filename.xlsm#sheetname!a22")
如果该位置位于当前工作簿的内部,则使用:
=HYPERLINK("#sheetname!a22")
如果位置位于不同的工作簿中,并且您可以在桌面应用程序中打开包含超链接(原点)的工作簿,则使用:
=HYPERLINK("[`https://company.sharepoint.com/teams/folder/folder/folder/filename.xlsm`]sheetname!a22")
这将在浏览器窗口中打开目标。此公式将不是在用作原点的 Excel 在线工作表中工作。
否则,如果您只想使用 Excel Online 链接到外部工作簿特定单元格,除了上面已经讨论过的手动链接创建之外,我找不到任何有效的组合。鉴于您需要使用 BASE64 转换,您只能使用以下任一方法:
- 制作启用宏的工作簿并利用 VBA 进行转换或
- 手动进行 BASE64 转换
- 对于我的用例来说,这两个都不是一个选择,因为:
- 我需要创建数千个链接,所以不愿意花时间手动进行所有这些转换
- 我的雇主不允许在网上使用 .xlsm