我已经使用不同的技术使得这个在 FireFox 上工作了。在我的情况下,Excel 生成 DOT 文件用于 GraphViz,然后生成 .svg 文件用于 FireFox。
链接技术有点丑陋,因为它需要很多小文件,但运行速度非常快。您需要选择一种新的文件类型,或者劫持一个很少使用的文件类型,例如 .xyz。您需要为要返回到 Excel 的每个单独的节点或边缘编写一个文件。文件的内容存储文件(工作簿)的名称、工作表和单元格引用。我只是将每个放在自己的一行上。您需要创建一个 vbscript (.vbs) 作为单独的脚本文件,这将是您的应用程序。此 vbscript 接受一个参数,即文件名,它所做的就是打开文件,读取工作簿名称、工作表名称和其中的单元格引用,以向 Excel 发送命令以显示该工作簿、工作表和单元格。然后,您需要将 vbscript 应用程序与文件类型 (例如 .xyz) 关联起来,在 FireFox 中使用“工具”->“选项”->“应用程序”。这可能有些棘手,因为您必须实际键入 vbs 文件的名称而不是浏览到它(您可以浏览到文件夹,然后切换到键入)。节点和边缘链接可以通过 .svg 传递(在我的情况下通过 URL 标记通过 DOT);svg 中的链接应指向使用 file:/// 表单的适当本地生成的文件(例如其中一个 .xyz 文件)。
当你在.svg中点击链接时,FireFox将启动本地vbscript作为应用程序,并将文件名作为参数。vbscript读取文件内容,定位Excel,并发送命令以激活正确的位置。完成所有这些操作后,脚本可以将Excel置于前台。
以下是获取命令行参数的vbscript代码片段:
arg = Wscript.Arguments(0)
以下是查找正在运行的Excel副本的vbscript代码片段:
Set objExcel = GetObject(, "Excel.Application")
使用这些类型的命令来读取文件:
Set objFSO = CreateObject("Scripting.FileSystemObject")
wkbName = objFSO.ReadLine
wksName = objFSO.ReadLine
使用这些类型的命令向Excel发送消息:
objExcel.Visible = True
wkb = objExcel.Workbooks(wkbName)
wkb.Activate
wks = wkb.Worksheets(wksName)
wks.Activate
wks.Rows(rowNum).Select
这段代码将使 Excel 前置(在 win 7 上测试通过):
set objWsh = CreateObject("Wscript.Shell")
objWsh.AppActivate objExcel.Name
(奇怪的是,Wscript.Shell.AppActivate objExcel.Name
却不行!)