Как отключить сохранение и отправку в Excel 2010 (на ленте «Файл» (называется за кулисами в Office 2010)?

У меня есть следующий VBA marco, работающий в Excel 2003, он блокирует меню «Сохранить», «Сохранить как», «Сохранить рабочую область», «Отправить в», но теперь мне нужно сделать то же самое, но для Excel 2010?

Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save As...").Enabled = False

Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save").Enabled = False

Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save Workspace...").Enabled = False

Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Send To").Enabled = False

Application.CommandBars("Worksheet Menu Bar").Controls("Format").Controls("Sheet").Enabled = False

В Excel 2010 есть «новое меню» под названием «Сохранить и отправить» (под лентой «Файл»), которое я также хотел бы отключить... Как вы это делаете? Я ищу эквивалент такой строки:

'Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save & Send").Enabled = False

Спасибо за помощь.


person Hubert    schedule 18.07.2013    source источник
comment
Если вы попытаетесь предотвратить сохранение, не лучше ли обработать событие Workbook_BeforeSave?   -  person Juliusz    schedule 18.07.2013
comment
См. ЗДЕСЬ для отвечать.   -  person Skip Intro    schedule 18.07.2013
comment
+1 @SkipIntro, это работа по редактированию ленты/XML. Связанный ответ может потребовать более подробной информации для реализации OP. Я считаю, что это кнопка управления FileSendAsAttachment.   -  person David Zemens    schedule 18.07.2013


Ответы (3)


Для примера/документации пользовательского интерфейса ленты от Microsoft: здесь. Они порекомендуют вам использовать Редактор пользовательского интерфейса.

Откройте файл (который должен иметь расширение файла Excel 2007+, например XLSX, XLSM, XLAM и т. д.) в редакторе пользовательского интерфейса. Затем используйте этот XML в редакторе:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
    <tab idMso="TabShare" visible="false" enabled="false">
    </tab>
</backstage>
</customUI>

Сохраните файл и закройте редактор CustomUI.

Затем откройте свой файл. Перейдите в представление File/Backstage, и вы должны увидеть, что вкладка Save and Send удалена:

скриншот отключенного TabShare

Примечание. Это отключило всю вкладку "Сохранить и отправить" в представлении Backstage. Должна быть возможность использовать XML для тонкой настройки, т. е. включить вкладку, но отключить определенные элементы управления в ней (например, может быть, вы хотите отключить только Send as Attachment, но хотите оставить другие параметры включенными и т. д.), но я не не совсем разработал иерархию XML для отключения только определенного элемента управления Send As Attachment.

Надеюсь это поможет!

Обновление из комментариев

1) Пользователь обнаружит «нормальную» функциональность, когда этот файл закрыт или когда другой файл активен. Настройка пользовательского интерфейса применяется только к файлу, который содержит XML-части пользовательского интерфейса, поэтому, если у вас открыто несколько файлов, отключенная вкладка Save & Send повлияет только на этот файл.

2) К сожалению, это не совместимо с Excel 2003 или более ранней версии. CustomUI/XML не является частью устаревших файлов XLS и поэтому не может быть реализован в этих версиях. Для версий Excel 2003 и более ранних версий вам придется использовать устаревшую версию CommandBars, которой можно управлять через VBA. Относительно легко поместить некоторый код VBA, который будет проверять, какая версия Excel, и запускать подпрограмму для отключения определенных CommandBar/элементов управления, только если пользователь находится в 2003 или более ранних версиях.

Если вы попытаетесь сохранить это в файл XLS, вы получите предупреждение о том, что эта функция несовместима с типом файла:

CustomUI XML, несовместимый с файлами XLS

Кроме того, вы не можете открыть файл XLS в редакторе CustomUI.

person David Zemens    schedule 18.07.2013
comment
Во-первых, большое спасибо за ваш ответ. 2 коротких вопроса, прежде чем я подтвержу ответ: 1. Будет ли это связано с рассматриваемым файлом Excel, а не со всем Excel? Другими словами, найдет ли пользователь свою «нормальную» конфигурацию после закрытия моего файла xls? 2. будет ли этот файл Excel работать для моих пользователей, которые все еще используют Excel 2003? Заранее спасибо за вашу помощь. - person Hubert; 18.07.2013
comment
@Hubert Я собираюсь обновить свой ответ, чтобы ответить на оба ваших вопроса. - person David Zemens; 18.07.2013
comment
@David Zemens Как отключить «Сохранить как»? Я не нашел рабочего решения. - person YasserKhalil; 05.05.2020
comment
Вы должны задать новый вопрос вместо того, чтобы захватывать комментарии к этому вопросу. Привет ???? - person David Zemens; 05.05.2020

Я пробовал команды, перечисленные ниже, и они отключают меню сохранения и отправки в Excel 2010:

Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Send To").Enabled = False
Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save & Send").Enabled = False
person user3679323    schedule 27.05.2014
comment
+1 за этот поздний ответ, но стоит отметить, что этот метод отключает эти элементы управления для ВСЕХ файлов Excel, фактически отключает их для всего приложения Excel до тех пор, пока вы не включите их снова. - person David Zemens; 27.05.2014

Эти команды работали для меня

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<commands>
    <command idMso="TabShare" enabled="false"/>
</commands> 
</customUI>
person A.Wie    schedule 06.01.2015