質問: * 実際の子excelでは、重い処理が走るため、メモリリーク対策で、この構成になってます * /rは、readonlyにしたい訳ではなく、workbook_openの実行/抑制を制御するためのトリックです * 子excelにてworkbook_openの代わりにauto_openを試したところ、caseAでは動いたけど、caseBだと動かなかったのも不思議です どなたか、お分かりになれば、よろしくお願いします。m(_ _)m
回答: Officeは従来、MDI; 親ウィンドウ内に子ウィンドウを開くスタイルでした。その後SDI; ドキュメント毎にウィンドウを開くスタイルに切り替えていきました。Excelは対応が遅れてExcel 2013でSDI化が行われました。 この際、仕様変更があり、`EXCEL.EXE`プロセスを起動しても既存のインスタンスにドキュメントを引き渡すようになりました。Excel 2010以前と同様に独立したインスタンスで処理させたい場合、コマンドラインオプション`/X`を追加することで制御できます。 ただし、この場合でも制御しきれないことがあるため、`CreateObject`で明示的に別インスタンスを生成することが推奨されています。 ``` Dim xlApp As Excel.Application Set xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open FileName:=ThisWorkbook.Path & "\" & childbook, ReadOnly:=True ... ```