METTRE À JOUR:
Après tous les détails résumés et discutés, j'ai passé 2 bonnes heures à vérifier les options, et cette mise à jour est à mettre en évidence i
.
Les préparatifs
Tout d'abord, j'ai effectué une installation propre d'Office 2010 x86 sur une machine virtuelle Clean Win7 SP1 Ultimate x64 alimentée par VMWare (c'est la routine habituelle pour mes tâches de test quotidiennes, j'en ai donc déployé beaucoup).
Ensuite, j'ai changé uniquement les options Excel suivantes (c'est-à-dire que toutes les autres sont laissées telles quelles après l'installation):
Advanced > General > Ask to update automatic links
vérifié :
Trust Center > Trust Center Settings... > External Content > Enable All...
(bien que celui qui concerne les connexions de données ne soit probablement pas important pour le cas):
Conditions préalables
J'ai préparé et placé C:\
un classeur exactement selon les @Siddharth Rout
suggestions de sa réponse mise à jour (partagée pour votre commodité): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx Le livre lié a ensuite été supprimé de sorte que le lien dans le partage le livre n'est pas disponible (bien sûr).
Ouverture manuelle
Le fichier partagé ci-dessus montre à l'ouverture (avec les options Excel énumérées ci-dessus) 2 avertissements - dans l'ordre d'apparition:
AVERTISSEMENT # 1
Après avoir cliqué sur, Update
j'en ai eu un autre:
AVERTISSEMENT # 2
Donc, je suppose que mon environnement de test est maintenant assez similaire à celui de OP
's) Jusqu'ici tout va bien, nous allons enfin
Ouverture VBA
Maintenant, je vais essayer toutes les options possibles étape par étape pour rendre l'image claire. Je ne partagerai que les lignes de code pertinentes pour plus de simplicité (un exemple de fichier complet avec le code sera partagé à la fin).
1. Application.Workbooks.Open simple
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Pas de surprise - cela produit LES DEUX avertissements, comme pour l'ouverture manuelle ci-dessus.
2. Application.DisplayAlerts = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Ce code se termine par AVERTISSEMENT # 1 , et l'une ou l'autre des options cliquées ( Update
/ Don't Update
) ne produit AUCUN autre avertissement, c'est-à-dire Application.DisplayAlerts = False
supprime l' AVERTISSEMENT # 2 .
3. Application.AskToUpdateLinks = False
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
En face de DisplayAlerts
, ce code se termine par AVERTISSEMENT # 2 uniquement, c'est-à-dire Application.AskToUpdateLinks = False
supprime l' AVERTISSEMENT # 1 .
4. Double faux
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
Apparemment, ce code finit par supprimer les DEUX AVERTISSEMENTS .
5. UpdateLinks: = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
Enfin, cette solution 1 ligne (proposée à l'origine par @brettdj
) fonctionne de la même manière que Double False: AUCUN AVERTISSEMENT n'est affiché!
Conclusions
Sauf une bonne pratique de test et un cas résolu très important (je peux rencontrer de tels problèmes tous les jours en envoyant mes classeurs à une tierce partie, et maintenant je suis prêt), 2 autres choses apprises:
- Les options Excel sont importantes, quelle que soit la version - en particulier lorsque nous arrivons aux solutions VBA.
- Chaque problème a une solution courte et élégante - avec une solution pas évidente et compliquée. Encore une preuve de cela!)
Merci beaucoup à tous ceux qui ont contribué à la solution, et en particulier à OP qui a soulevé la question. J'espère que mes enquêtes et les étapes de test décrites en détail ont été utiles non seulement pour moi)
Le fichier d'exemple avec les exemples de code ci-dessus est partagé (de nombreuses lignes sont délibérément commentées): https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
Réponse originale (testée pour Excel 2007 avec certaines options):
Ce code fonctionne très bien pour moi - il parcourt TOUS les fichiers Excel spécifiés à l'aide de caractères génériques dans le InputFolder
:
Sub WorkbookOpening2007()
Dim InputFolder As String
Dim LoopFileNameExt As String
InputFolder = "D:\DOCUMENTS\" 'Trailing "\" is required!
LoopFileNameExt = Dir(InputFolder & "*.xls?")
Do While LoopFileNameExt <> ""
Application.DisplayAlerts = False
Application.Workbooks.Open (InputFolder & LoopFileNameExt)
Application.DisplayAlerts = True
LoopFileNameExt = Dir
Loop
End Sub
Je l'ai essayé avec des livres avec des liens externes indisponibles - aucun avertissement.
Exemple de fichier: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm