我正在努力翻译一些我写回JScript的C#代码。从长远来看,我需要打开一个Excel工作簿,或者(如果它已经打开)将它带到前面。与C#不同,JScript依赖于伪劣ActiveXObject
来获取Excel应用程序的句柄:
var Excel = new ActiveXObject("Excel.Application");
一旦你抓住了对象,API在MSDN适用的所有语言中都非常相似。但是,使用ActiveXObject
似乎会创建一个全新的Excel实例。
如果我使用以下代码:
var Excel = new ActiveXObject("Excel.Application");
alert(Excel.ActiveSheet === null); // assume alert works as it does in Javascript
并且Excel已经打开,警报将以true
的形式返回。此外,任何使用new ActiveXObject("Excel.Application")
设置但未被垃圾收集拾取的变量都会导致出现新的EXCEL.EXE进程:
毋庸置疑,所有这些都使我无法检查工作簿是否已经打开,并且随后导致丑陋的“你想打开这个只读”警告出现。有没有办法解决这个问题?
答案 0 :(得分:3)
根据MSDN,您可以使用JScript中的the GetObject
function。
var Excel = GetObject(null, "Excel.Application");