2013-07-18 4 views
2

J'ai le VBA marco suivant en cours d'exécution dans Excel 2003, il bloque l'enregistrement, Enregistrer sous, Enregistrer l'espace de travail, Envoyer à menus mais je dois maintenant faire la même chose mais pour Excel 2010?Comment désactiver "Enregistrer et envoyer" dans Excel 2010 (dans le ruban de fichier (appelé Backstage dans Office 2010)?

Application.CommandBars (« feuille de barre de menus »). Commandes (« fichier »). les contrôles (« Enregistrer sous ... ») .Enabled = False

Application.CommandBars ("Feuille de travail de la barre de menus"). Contrôles ("fichier"). Contrôles ("Enregistrer"). activés = Faux

Application.CommandBars ("Feuille de travail de la barre de menus"). Contrôles ("Fichier"). Les contrôles ("Enregistrer l'espace de travail ..."). Activé = False

Application.CommandBars ("feuille de barre de menus") .Controls ("fichier"). Contrôles ("Envoyer à"). Activé = False

Application.CommandBars ("feuille de barre de menus"). Contrôles ("Format"). contrôles ("feuille") .Enabled = False

Il existe un "nouveau menu" dans Excel 2010 appelé "Enregistrer et envoyer" (sous le ruban Fichier) que je voudrais également désactiver ... Comment faites-vous cela? Je cherche l'équivalent à une ligne comme celui-ci:

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

Merci pour votre aide.

+0

Si vous essayez d'éviter une sauvegarde, ne serait pas mieux gérer l'événement "Workbook_BeforeSave"? – Juliusz

+1

Voir [HERE] (http://stackoverflow.com/questions/11697013/remove-save-send-from-file-menu-in-excel-2010-using-custom-xml) pour une réponse. –

+0

+1 @SkipIntro c'est un travail pour l'édition de ruban/XML. La réponse liée peut avoir besoin de plus de détails pour que l'OP puisse être implémenté. Je crois que c'est le contrôle du bouton 'FileSendAsAttachment'. –

Répondre

4

Pour l'exemple d'interface utilisateur de ruban/documentation de Microsoft, here. Ils vous recommanderont d'utiliser le CustomUI Editor.

Ouvrez votre fichier (qui doit être une extension de fichier Excel 2007+ comme XLSX, XLSM, XLAM, etc.) dans l'éditeur CustomUI. Ensuite, utilisez ce code XML dans l'éditeur:

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

Enregistrez le fichier et fermez l'éditeur customUI.

Ensuite, ouvrez votre fichier. Aller au fichier/mode Backstage et vous devriez voir que l'onglet Save and Send a été supprimé:

screenshot of disabled TabShare

Note: Cette a désactivé l'ensemble de l'onglet « Enregistrer & Envoyer » de la vue dans les coulisses. Il devrait être possible d'utiliser XML pour affiner l'onglet, mais désactiver les contrôles spécifiques (par exemple, vous voulez peut-être seulement désactiver Send as Attachment mais vous voulez laisser les autres options activées, etc.) mais je n'ai pas pas tout à fait élaboré la hiérarchie XML pour désactiver seulement le contrôle spécifique Send As Attachment.

Espérons que cela aide!

mise à jour de Commentaires

1) L'utilisateur trouvera la fonctionnalité « normale » lorsque ce fichier est fermé, ou lorsqu'un autre fichier est actif.La personnalisation de l'interface utilisateur s'applique uniquement au fichier contenant les parties XML de l'interface utilisateur personnalisée. Par conséquent, si plusieurs fichiers sont ouverts, seul ce fichier sera affecté par l'onglet Save & Send désactivé.

2) Malheureusement, ce n'est pas compatible avec Excel 2003 ou antérieur. Le CustomUI/XML ne fait pas partie des fichiers XLS hérités et ne peut donc pas être implémenté dans ces versions. Pour les versions 2003/antérieures d'Excel, vous devrez utiliser l'ancien CommandBars qui peut être contrôlé via VBA. Il est relativement facile de mettre du code VBA qui va vérifier quelle version d'Excel, et exécuter un sous-programme pour désactiver certains contrôles CommandBar/seulement si l'utilisateur est en 2003 ou versions antérieures.

Si vous essayez d'enregistrer cela à un fichier XLS, vous recevrez un avertissement, indiquant que cette fonction est incompatible avec le type de fichier:

CustomUI XML not compatible with XLS files

De plus, vous ne pouvez pas ouvrir un fichier XLS dans l'éditeur CustomUI.

+0

D'abord, merci beaucoup pour votre réponse. 2 questions rapides avant de valider la réponse: 1. Cela sera-t-il lié au fichier Excel en question et non à l'ensemble d'Excel? En d'autres termes, l'utilisateur retrouvera-t-il sa config "normale" une fois qu'il aura fermé mon fichier xls? 2. Ce fichier Excel fonctionnera-t-il toujours pour mes utilisateurs qui utilisent encore Excel 2003? Merci d'avance pour votre aide. – Hubert

+0

@Hubert Je vais mettre à jour ma réponse pour répondre à vos deux questions. –

+0

Merci David. Il fonctionne comme un charme. – Hubert

3

J'ai essayé les commandes listées ci-dessous et ceux-ci sont invalidantes l'enregistrer et envoyer menu 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 
+0

+1 pour cette réponse tardive, mais il convient de noter que cette méthode désactive ces contrôles pour les fichiers Excel ** ALL **, en fait la désactive pour l'ensemble de l'application Excel sauf si vous les réactivez. –

-1

Cette commande a fonctionné pour moi

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
<commands> 
    <command idMso="TabShare" enabled="false"/> 
</commands> 
</customUI> 
Questions connexes