2016-04-29 3 views
0

Я создал новое приложение Excel:Как скрыть ленту Excel, создав новое приложение Excel с помощью C#?

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

Теперь я хотел бы скрыть ленту в этом приложении полностью (то есть, не давая к пользователю Excel возможности показать эту ленту еще раз). Как мне это сделать?

Я нашел одно решение:

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

, но я хотел бы найти более удобный способ, не используя макросы. Как это возможно?

+0

http://stackoverflow.com/questions/19019546/vba-minimize-ribbon-in-excel –

ответ

0

Попробуйте это:

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

... из другого источника. Не знаю, как это сделать без макроса.

0

Мое решение не так элегантно, но оно делает то, что вы хотите, без Макро.

Вам нужны следующие ссылки:

  • с использованием Microsoft.Office.Interop.Excel;
  • using System.Runtime.InteropServices;
  • using System.Diagnostics;
  • using 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») , Проверьте его, если он не находит его.

+0

Извините, я сделал опечатку, последняя ссылка вам нужна System.Windows.Forms;) –

+0

Excel немедленно закрывается после завершения метода, поэтому при тестировании кода добавьте Console.ReadKey(); или аналогичные, чтобы предотвратить его закрытие. –

+0

Спасибо, Аттила. Но в этом случае пользователь Excel сможет вернуть ленту назад, нажав Ctrl + F1, но такое поведение нежелательно (лента должна быть скрыта навсегда). – Jordan