1

OLE を使用してデータを Excel に書き込むサードパーティ プログラムがあります。残念ながら、そのアプリケーションのプログラマーは、Excel を非表示にし、更新を非表示にすると Excel の速度が大幅に向上することを理解していません。現時点では、大規模なジョブが完了するまでに最大 15 分かかります。これは非常に面倒です。したがって、プログラムがExcelに書き込むときに可視性などをシャットダウンするアドインを作成したいと思います。それを行う方法はありますか?これは、この手法を使用する唯一のアプリケーションであるため、COM / OLE 相互作用を検出するだけで十分です。

4

1 に答える 1

1

それがOLEオートメーションの手にあるかどうかを確認するためのExcelチェックを持っているのではなく、OLEを実行しているプロセスの名前についてウィンドウをチェックすることが可能です。

何かのようなもの

Function isRunning(ProcessName) As Boolean

Dim objWMIcimv2 As Object
Dim objList As Object

Set objWMIcimv2 = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2") 'Connect to CIMV2 Namespace

Set objList = objWMIcimv2.ExecQuery _
("select * from win32_process where name='" & ProcessName & "'")

If objList.Count > 0 Then

  isRunning = True

End If
End Function

そこから、画面の更新を非常に簡単に抑制することができます。サードパーティのアプリケーションは通常、ユーザーのデスクトップでアイドル状態で実行されているわけではないと推測しています。もしそうなら、明らかにこのアプローチはあなたを助けません。

プログラムの終了に関するこのリンクからインスピレーションを得たコード

于 2012-12-14T23:40:29.497 に答える