以下代码尝试附加到已打开 C:\test 文件的 excel 会话。如果这样的会话不存在,则返回 null 或引发异常。
var myExcelWorkbook = Marshal.BindToMoniker(@"C:\test") as Excel.Workbook;
当文件没有扩展名时,这非常有效。但是,如果我尝试使用具有扩展名的文件(例如 C:\test.xlsb)使用完全相同的代码,则调用会在返回之前尝试使用 excel 打开该文件。如果一个实例已经在运行,它将尝试在该实例中打开文件(就像有人在 Windows 资源管理器中双击该文件一样)。
var myExcelWorkbook = Marshal.BindToMoniker(@"C:\test.xlsb") as Excel.Workbook;
这肯定与扩展名有关(否则 BindToMoniker 怎么知道如何打开 Excel?),但很烦人,因为我不想附加到尚未打开该文件的现有 excel 会话。
有没有办法禁用该“功能”?我希望 BindToMoniker 方法永远不会尝试打开文件,让我决定在各种情况下要做什么。