如何通过使用C#创建新的Excel应用程序来隐藏Excel功能区?

时间:2016-04-29 12:28:53

标签: c# excel hide office-interop ribbon

我创建了一个新的Excel应用程序:

Microsoft.Office.Interop.Excel.Application application = new Excel.Application();

现在,我想完全隐藏此应用程序中的功能区(即,不向Excel用户提供再次显示此功能区的可能性)。我该怎么办?

我找到了一个解决方案:

application.ExecuteExcel4Macro("SHOW.TOOLBAR(\"Ribbon\",False)");

但我希望找到一种更优雅的方式,而不是使用宏。这有可能吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

If Application.ExecuteExcel4Macro("Get.ToolBar(7,""Ribbon"")") Then
    Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", False)"
Else
    Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", True)"
End If

......来自其他来源。如果没有宏,就不知道该怎么做。

答案 1 :(得分:0)

您可以尝试使用Microsoft Active Accessibility

答案 2 :(得分:0)

我的解决方案并不那么优雅,但如果没有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"运行,也许它可以在其他PC上有所不同(例如" excel"或" Excel")。检查是否找不到。