我创建了一个新的Excel应用程序:
Microsoft.Office.Interop.Excel.Application application = new Excel.Application();
现在,我想完全隐藏此应用程序中的功能区(即,不允许Excel用户再次显示此功能区)。我该怎么做?
我找到了一个解决方案:
application.ExecuteExcel4Macro("SHOW.TOOLBAR("Ribbon",False)");
但我想找到一种更优雅的方式,而不是使用宏。这有可能吗?
试试这个:
If Application.ExecuteExcel4Macro("Get.ToolBar(7,""Ribbon"")") Then
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", False)"
Else
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", True)"
End If
来自另一个来源。不知道如何在没有宏的情况下做到这一点。
您可以尝试使用Microsoft Active Accessibility。
我的解决方案并不那么优雅,但它在没有Macro的情况下可以随心所欲。
您需要以下参考资料:
- 使用Microsoft.Office.Interop.Excel
- 使用System.Runtime.InteropServices
- 使用System.Diagnostics
- 使用System.Diagnostics
将此代码添加到您的类中:
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
private static void OpenExcelWithoutRibbon() {
Application excelApp = new Application();
excelApp.Visible = true;
Process prc = Process.GetProcessesByName("EXCEL").First();
prc.WaitForInputIdle();
IntPtr h = prc.MainWindowHandle;
SetForegroundWindow(h);
System.Windows.Forms.SendKeys.SendWait("^{F1}");
}
在我的电脑上,Excel以进程名"Excel"运行,也许在其他电脑上(如"Excel"或"Excel")会有所不同。如果没有找到,请检查它。