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 のすべてのセキュリティ ゾーンを Low に設定してみました。次に、すべての IE/mshta ウィンドウを閉じて、テスト コードを再度開いたところ、まったく同じエラー メッセージが表示されました。

私はここで途方に暮れています。ヘルプ?

編集

念のため、いくつかの重要なポイントを追加します。

OS: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();

もう 1 つのポイントは、msdn に記載されているように、ActiveXObject コンストラクターの「ローカル」パラメーターである可能性があります。

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 に答える