私は、ワークシートをロードするExcelのインスタンスとロードしないExcelのインスタンスを区別する方法を見つけようとしてきました。
現在、コードを使用して、次のような既存のファイルを開きます。
Dim wkbWorkBook as Excel.Workbook
Dim objExcel As Excel.Application
wkbWorkBook = System.Runtime.InteropServices.Marshal.BindToMoniker(filename)
objExcel = wkbWorkBook.Parent
'To make the excel app visible while working with it:
objExcel.Visible = true
このコードを使用しているときに気付いたのは、存在するがExcelで開かないファイルを開いた場合、Excelアプリケーションを表示すると、ワークシートは表示されませんが、存在します(アクセスできます)ワークシート.countおよび適切な数のシートがあります)
Worksheets.Visibleを使用してみましたが、「Visible」の値が表示される場所にHRESULTエラーしかないことに気付きました。
ワークシートが表示されている場合でもVisibleプロパティを取得しようとすると、同じエラーが発生します(現在Excelで開いているファイルをBindToMoniker()にした場合)。
私の質問の一部は、なぜBindToMoniker()+ Application = workbook.Parentが、シートがロードされていないExcelアプリケーションを常に提供してくれるのかということです。