0

Excelの非表示のインスタンスがあり、実行中のExcelの唯一のインスタンスであるときに、ユーザーがワークブックをダブルクリックして非表示にしようとしています。Application_WorkbookOpen()現在の私の解決策は、非表示のインスタンスのイベントをキャッチするApplication_WorkbookNew()ことです。それらが発生した場合は、大まかに次のようにします。

Dim strWbOpenedName as String, xlNew as New Excel.Application
strWbOpenedName = Wb.path & "\" Wb.name
Wb.Close False
xlNew.Visible = True
xlNew.Workbooks.Open strWbOpenedName
Set xlNew = Nothing

ただし、表示され、ワー​​クブックを開いた最後のExcelインスタンスであるにもかかわらず、xlNewは後続のApplication_WorkbookOpenイベントを受け取りません。これらは元の非表示のインスタンスに移動します。したがって、「メイン」のExcelインスタンスを新しく作成したインスタンスにリダイレクトする方法を知っている人はいますか?

実行中のオブジェクトテーブルで遊んでみる必要があるという恐ろしい疑いがあります(Windowsが開いたブックを送信するインスタンスとして扱うExcelのインスタンスをどのように選択するかによって異なります)が、適切なことについてはあまりよくわかりませんそれの管理(たとえば、それがどのインスタンスを使用するかを決定する方法である場合、システムをフォールオーバーさせることなく、登録されたExcelインスタンスのhWndをxlNewから利用可能なものに切り替えることができますか?)

4

1 に答える 1

1

既に開いているため、これ以上 Application_Open イベントを受け取ることはありません。非表示のインスタンスで次のことを試すことができます...

xlHidden.IgnoreRemoveRequests = true;

これは VS2005 と Office 2003 で動作しています - 少し古いです!

于 2013-01-07T12:56:23.870 に答える