目标是访问计算机中正在运行的Excel工作簿。意图是通过用户打开的这个应用程序关闭相应的工作簿。
已实现:我使用以下代码段访问Excel COM对象
Excel.Application instance = null;
try
{
instance = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
}
catch (Exception ex)//Excel not open
{
wasFoundRunning = false;
}
if (wasFoundRunning)
{
foreach (Excel.Workbook ss in instance.Workbooks)
{
string s = ss.Name;
}
}
问题:以上代码仅适用于机器中同一用户打开的Excel工作表和应用程序。我必须以管理员身份运行应用程序,但它失败了。例外情况如下,这意味着它无法找到任何运行的Excel工作表。
Exception: Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
如果我将应用程序提升并且用户打开工作表,则会失败。
有任何解决此问题的想法吗?