0

因此,我的一位同事在尝试创建 Excel ActiveXObject 时遇到了一个奇怪的错误;因此,我制作了一些测试代码并将其放入托管在网络驱动器上的 .hta 中:

<html>
<head>
<title>
JUST FOR AVERY
</title>
</head>
<body>
<script type="text/javascript">
var objExcel = new ActiveXObject("Excel.Application")
var myBook = objExcel.Workbooks.Add;
</script>
</body>
</html>

现在,这段代码 100% 对我有用。但是,对于 Avery,她收到以下错误:

The object invoked has disconnected from its clients.

它给出的行号对应于创建 ActiveXObject 本身。

我们尝试将所有 Internet Explorer 安全区域设置为低,这样我们就知道我们已经覆盖了所有内容;然后我们关闭了所有 IE/mshta 窗口,再次打开测试代码,我们得到了完全相同的错误消息。

我在这里不知所措。帮助?

编辑

只是补充一些关键点,以防万一:

操作系统:Windows 7
IE:Internet Explorer 8

4

1 回答 1

0

在我发现另一个关于 javaScript 中 Excel 的 stackoverflow 问题后,我认为 ActiveXObject 模型不像 javaScript 所期望的那样可靠/稳定。

因此,我认为可能是您使用该Add功能的方式:

var myBook = objExcel.Workbooks.Add;

在 javaScript 中,这意味着 myBook 是“函数Add”。要获得“结果Add”,您必须将其与括号一起使用:

var myBook = objExcel.Workbooks.Add();

我知道 VBScript 会执行带有和不带有面包屑的函数,但在 javaScript 中,函数是一流的对象。我可以想象这会破坏 IE 和 ActiveXes

“一等对象”意味着,每个函数也是一个对象:

// Save a function object to a variable
var myFunction = function () { };

// and later
// Use the function variable
var result = myFunction();

另一点可能是 ActiveXObject 构造函数的“本地”参数,如 msdn 上所述:

在 Avery 的计算机上,IE 在远程计算机(网络共享)上隐式创建对象,这可能会破坏您的新 ActiveXObject。

尝试类似(我无法测试这些假设!)

var objExcel = new ActiveXObject("Excel.Application", 'localhost');
var objExcel = new ActiveXObject("Excel.Application", '.');
var objExcel = new ActiveXObject("Excel.Application", '\\\\.\\');
于 2013-06-30T23:39:00.520 回答