VBA свернуть ленту в Excel
Я хочу минимизировать ленту в Excel 2013 с VBA. Я не хочу переключать ленту, и я не хочу скрывать все, включая "Файл", "Вставить" и т. Д. Я пробовал несколько разных способов, но ни один из них не удовлетворяет желаемому.
Это скрывает все:
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
Это переключает:
CommandBars.ExecuteMso "MinimizeRibbon"
Это также переключает:
SendKeys "^{F1}"
Как я могу просто заставить свою ленту сворачиваться?
3 ответа
Не уверен, когда вы пытаетесь вызвать это, но это будет работать, чтобы минимизировать ленту, если она открыта
If Application.CommandBars("Ribbon").Height >= 150 Then
SendKeys "^{F1}"
End If
Минимальный размер открытой ленты равен 150, поэтому он будет переключаться, только если он открыт
Измерьте высоту ленты, переключите ее, измерьте снова и, если она выше, повторно переключите. Лучше всего также установить Application.Screenupdating = false.
ht1 = Application.CommandBars("Ribbon").Height
SendKeys "^{F1}", False
DoEvents
ht2 = Application.CommandBars("Ribbon").Height
If ht2 > ht1 Then SendKeys "^{F1}", False
И я ненавижу, когда люди задаются вопросом, почему ты хочешь делать то, что хочешь. У меня есть приложение Dictator, и мне нужно 100% контролировать взаимодействие с Excel.
При условии, что никто другой не возится с настройками (и если бы все сделали то, что я предлагаю, было бы здорово), если вы повторно включите свертывание ленты перед закрытием, она всегда будет там при открытии, поэтому ее МОЖНО свернуть. Просто не забудьте вручную скрыть ленту перед выходом из нее один раз, тогда она всегда будет скрыта при открытии.
Private Sub Workbook_Open()
Application.DisplayFormulaBar = False
Application.CommandBars.ExecuteMso "MinimizeRibbon"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFormulaBar = True
Application.CommandBars.ExecuteMso "MinimizeRibbon"
End Sub
Если вы хотите, чтобы это было полностью скрыто при открытии рабочей книги, добавьте это в код рабочей книги:
Private Sub Workbook_Open()
Application.ExecuteExcel4Macro "show.toolbar(""Ribbon"",False)"
End Sub