2010-11-22 27 views
4

Je l'automatisation de Word, donc je voudrais supprimer toutes les alertes.Automation Word - Désactiver les alertes

Word.Application word = new Word.Application(); 
word.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone; 

J'utilise le code ci-dessus, mais je continue à recevoir des messages à partir de Word - par exemple, le document est déjà ouvert. Y a-t-il un moyen d'éviter cela? Comment supprimer tous ces messages stupides?

EDIT:
concider à toutes les réponses, je suppose un chien de garde est vraiment la seule option. Pour le pire, rien n'a changé ces dernières années.

fil peut être fermé sans une vraie réponse.

+0

Ma première question est la suivante: pourquoi votre code tente-t-il d'ouvrir un document déjà ouvert? –

+0

Pouvez-vous poster un code complet afin que le message puisse être reproduit? – shahkalpesh

+0

Word.Document wordDoc = word.Documents.Open (document); peut produire ce comportement. La question n'est pas de savoir comment éviter de telles erreurs, car cela ne peut pas être fait dans tous les cas (interaction de l'utilisateur, par exemple). – Jaster

Répondre

3

La portion de code que vous avez posté semble évidemment correct, mais il ne suffit pas pour moi de reproduire le comportement que vous décrivez. Mais ...

J'ai une forte suspicion la réponse est que vous ne pouvez pas supprimer complètement les messages dans Word. Il a été conçu en tant qu'application interactive pour l'utilisateur et le paramètre DisplayAlerts est un peu une proposition à succès. Certaines erreurs semblent pouvoir être exemptées du paramètre d'alerte spécifié et s'afficher quand même. Par exemple, j'ai vu des fautes d'orthographe et de grammaire se comporter comme ça avant.

La meilleure chose à faire est d'essayer d'anticiper les erreurs qui peuvent se produire et éviter de les générer. Dans votre cas, vous devriez vérifier si le document que vous êtes sur le point d'ouvrir est déjà ouvert. Je ne sais pas pourquoi vous jamais produirez cette erreur en premier lieu (vous attrapez l'erreur et puis la recherche de l'instance existante du document pour fonctionner sur, ou la façon dont votre code ne continue en cours d'exécution?) , mais il devrait être assez simple d'insérer quelques clauses de garde avant de commencer à exécuter le code approprié.

+4

J'ai une forte suspicion la réponse est que vous ne pouvez pas supprimer complètement les messages dans Word. -> Cette déclaration est correcte. Vous ne pouvez jamais supprimer tous les messages dans Word. – Jens

+0

Cody gris est juste. Vous trouverez qu'il y a + beaucoup + de messages qui peuvent encore apparaître quand vous y attendez le moins. Vous aurez besoin de beaucoup de journalisation, et peut-être même d'une classe de surveillance qui ralentira essentiellement l'instance de Word que vous avez démarrée si elle ne revient pas dans un délai raisonnable. Sinon, si vous courez sans surveillance, vous risquez fort de bloquer le mot et donc votre application. Ce n'est pas optimal mais beaucoup de gens ont entendu parler de cette manière. – DarinH

+0

Je pense toujours qu'une vérification simple avant que toute méthode qui pourrait * éventuellement * (déterminée par des tests approfondis et des commentaires de l'utilisateur) génère une condition exceptionnelle (c'est-à-dire, un message d'erreur) soit désactivée 99.9% de vos problèmes avec le moins d'efforts et de problèmes. Comme (pseudo-code): 'Si thisFile.IsAlreadyOpen Then Exit Sub' –