Excel для Mac скрыть ленту - PullRequest
0 голосов
/ 20 ноября 2018

Я разрабатываю программу VBA поверх Excel для Mac (версия 16.19).Поскольку мне нужно больше места на экране (ноутбука) для отображения результатов, я хочу скрыть ленту при открытии книги.

Все решения, которые я видел до сих пор, работают только на Windows, а не на Mac.Я также попробовал Macscript сделать это через Applescript (см. Ниже).Этот скрипт отлично работает, если я запускаю его из scripteditor, но не внедряю в VBA.

tell application "System Events" to tell process "Microsoft Excel"
    set frontmost to true
    keystroke "r" using {command down, option down}
end tell

В VBA это выглядит так:

Sub example()
Dim toggleRibbon As String
toggleRibbon = "tell application ""System Events"" to tell process ""Microsoft Excel""" & vbNewLine & _
                            "set frontmost to true" & vbNewLine & _
                            "keystroke ""r"" using {command down, option down}" & vbNewLine & _
                         "end tell"
Debug.Print toggleRibbon 'to check format (use of double quotes, etc.)
MacScript (toggleRibbon)
End Sub

При выполнении этого кода выдается ошибка 5 во времявремя выполнения

Кто-нибудь может решить мою проблему?

1 Ответ

0 голосов
/ 20 ноября 2018

Согласно словарю Excel, команда должна быть "показать ленту" или "лента развернута".Однако, пытаясь получить эти свойства из документа приложения, окна, рабочей книги, основного окна, ... всегда возвращайте «пропущенное значение».Я предполагаю, что Microsoft неправильно обрабатывает это для Applescript.

Итак, еще раз обойдемся, чтобы симулировать действия пользователя.Скрипт ниже имитирует нажатие пункта 4 (= «Лента») меню 5 («Вид») строки главного меню.Конечно, Excel должен быть активирован (передний край) перед симуляцией:

tell application "Microsoft Excel" to activate
tell application "System Events" to tell process "Microsoft Excel" to click menu item 4 of menu 5 of menu bar 1

Этот скрипт является триггером: если лента видна для окна, она становится скрытой.Если лента скрыта, она становится видимой.

Вместо флип / флоп, если вы хотите проверить текущее значение, вам нужно поставить галочку в меню (пропущенное значение или ✓). Это можно сделать через:

tell application "System Events" to tell process "Microsoft Excel" to set X to (value of attribute "AXMenuItemMarkChar" of menu item 4 of menu 5 of menu bar 1) is "✓"

X истинно, если лента видна.

Протестировано в Excel 2011. Позиции меню могут отличаться в других версиях Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...