2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« 環境変数のPATHを行分けして表示するバッチファイル(続編) | トップページ | ExcelオートメーションでDDE要求を無視する。の別解は駄目 »

2007年2月18日 (日)

ExcelオートメーションでDDE要求を無視する。

Excelオートメーションで処理しているときに、Excelファイルを関連付けで開いたり、印刷すると、Excelオートメーションの処理中にDDE要求が入って来て、困ります。

なので、Excelオートメーションの処理中は「他のアプリケーションを無視する」とよいでしょう。
ただし、「他のアプリケーションを無視する」のは、そのオートメーション処理中のExcelだけで、他のExcelの設定を変えないようにするには若干コツが必要です。

Set Application=CreateObject("Excel.Application")

の代わりに、

Set Application=GetApplication()

とします。

以下のVBSファイルは、そういうExcelを起こして、ブックを開きます。

IgnoreRemoteRequests.VBS [ブック...]

Option Explicit

Dim Application
Dim Arg

Set Application=GetApplication()
Application.Visible=True
Application.UserControl=True
For Each Arg In WScript.Arguments
  Application.WorkBooks.Open Arg
Next

Function GetApplication()
Dim Application
Dim IgnoreRemoteRequests

Set Application=CreateObject("Excel.Application")
IgnoreRemoteRequests=Application.IgnoreRemoteRequests
If IgnoreRemoteRequests=False Then Application.IgnoreRemoteRequests=True
Application.Quit
Set Application=Nothing
Set GetApplication=CreateObject("Excel.Application")
If IgnoreRemoteRequests=True Then Exit Function
Set Application=CreateObject("Excel.Application")
Application.IgnoreRemoteRequests=False
Application.Quit
Set Application=Nothing
End Function

« 環境変数のPATHを行分けして表示するバッチファイル(続編) | トップページ | ExcelオートメーションでDDE要求を無視する。の別解は駄目 »