2017-11-17 8 views
1
var Excel = new ActiveXObject('Excel.Application'); 

Excel.Visible = false; 
var Excel_file = Excel.Workbooks.Open(Worksheet); 
} 

if(x == 2) 
{ 
Excel_file.close(false); 
Excel.Quit(); 
Excel.Application.Quit(); 
Excel = null; 
Excel_file = null; 

window.setTimeout(CollectGarbage, 10); 
//Excel.DisplayAlerts = false; 
} 

Windows Task Manager DisplayActiveXObjectを(Excelは)私は、舞台裏でExcelアプリケーションを開きます(定義され、他の場所と呼ばれる)私の機能を実行して、それを閉じるためにActiveXObjectのを使用Procces <Javascript>で32

* EXCEL.EXEを残し。問題は、タスクマネージャによって、プログラムを実行するたびに、プロセスセクションにEXCEL.EXE * 32の新しいインスタンスが作成されるということです。

このスクリプトはウェブページ上にあり、1日を通して頻繁に実行されます。プログラムが実行されるたびに異なるインスタンスを作成することは現実的ではありません。

他の人が推薦したように、ドキュメント化されていない「CollectGarbage」を使用しようとしましたが、それでも問題は解決しません。

アイデア? ありがとうございます。

答えて

0

同じアクティブなオブジェクトを使用して、タスクマネージャでタスクを強制終了できます。以下

var WshShell = new ActiveXObject("WScript.Shell"); 
var oExec = WshShell.Exec("taskkill /F /IM EXCEL.exe"); 

TASKKILL

エンド1つまたは複数のプロセス(プロセスIDまたはイメージ名で)を試してみてください。

構文 TASKKILL [/ Sユーザー名[/ P username] [/ P [パスワード]]] {[/ FIフィルタ] [/ PID processid |//Sシステム接続先のリモートシステム。これは、ほんの少しあまりにもよく、仕事を達成

  Imagename eq, ne     String 
     PID   eq, ne, gt, lt, ge, le Positive integer. 
     Session  eq, ne, gt, lt, ge, le Any valid session number. 
     Status  eq, ne     RUNNING | NOT RESPONDING 
     CPUTime  eq, ne, gt, lt, ge, le Time hh:mm:ss 
     MemUsage eq, ne, gt, lt, ge, le Any valid integer. 
     Username eq, ne     User name ([Domain\]User). 
     Services eq, ne     String The service name 
     Windowtitle eq, ne     String 
     Modules  eq, ne     String The DLL name 
+0

/U [domain\]user The user context under which the command should execute. /P [password] The password. Prompts for input if omitted. /F Forcefully terminate the process(es). /FI filter Display a set of tasks that match a given criteria specified by the filter. /PID process id The PID of the process to be terminated. /IM image name The image name of the process to be terminated. Wildcard '*' can be used to specify all image names. /T Tree kill: terminates the specified process and any child processes which were started by it. 

フィルタは、下のフィルタのいずれかを適用します。最新のインスタンスに限定することはできますか?言い換えれば、ユーザーは、プログラムの実行時に別のExcelファイルをロードすることがあります。「taskkill latest Excel.exe」などの節を追加することができます。また、ご協力いただきありがとうございます –

+0

はい、できます。エクセルプロセスを開くたびに、プロセスIDを保存し、プロセスIDを使用してプロセスIDを閉じます。私は答えの下でいくつかのコマンドを投稿します。必要に応じて独自のコマンドを作成します。 – Chidambaram

関連する問題