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から利用可能なものに切り替えることができますか?)