您如何将Office 365 Excel工作簿带到前面?

时间:2018-10-26 15:45:38

标签: .net excel

假设您打开了一堆Excel工作簿,但您想将其排在最前面以使用户与该书进行交互。你怎么做到的?

我当前正在使用Microsoft.Office.Interop.Excel 15.0.0.0版。

我尝试没有成功:

Excel.Workbook output = app.Workbooks[path];
(Excel._Workbook)output).Activate();

  foreach (Excel.Windows w in ((Excel._Workbook)output).Windows)
    w.*something*

force to bring excel window to the front?这个问题不适用,因为365已放弃MDI,因为每个工作簿都有单独的窗口。

1 个答案:

答案 0 :(得分:0)

答案是来自引用页面的答案的组合:

  1. 使用Windows查找Excel应用程序窗口(其中一个)并将其向前显示。
  2. 使用Excel激活所需的工作簿。
BringExcelWindowToFront(app);
((Excel._Workbook)output).Activate();

这是执行第一部分的支持代码:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

public static void BringExcelWindowToFront(Excel.Application xlApp)
{

  string caption = xlApp.Caption;
  IntPtr handler = FindWindow(null, caption);
  SetForegroundWindow(handler);
}