121 votes

Comment supprimer l'avertissement "Update Links" ?

J'essaie d'écrire un script qui ouvre plusieurs fichiers Excel. Je continue à obtenir l'invite :

This workbook contains links to other data sources.

Je veux empêcher ce message d'apparaître, afin que mon script puisse simplement parcourir automatiquement tous les classeurs sans que je doive cliquer sur Don't Update pour chacun d'eux. Actuellement, j'utilise les éléments suivants :

function getWorkbook(bkPath as string) as workbook

Application.EnableEvents=False
Application.DisplayAlerts=False
getWorkbook=Workbooks.Open(bkPath,updatelinks:=0,readonly:=false)

end function

Cependant, le message apparaît toujours. Comment puis-je le supprimer ?

EDIT : Il semble que ce message s'affiche pour les classeurs dont les liens sont rompus. This workbook contains one or more links that cannot be updated parce que j'avais mis DisplayAlerts à faux. Les classeurs sont liés à des fichiers équivalents dans un dossier sur notre serveur Windows, de sorte que lorsque le fichier correspondant est supprimé de ce dossier (ce qui se produit dans le cadre de notre flux d'activités), le lien est rompu. Est-il possible de supprimer l'avertissement lorsque le lien est rompu ?

J'utilise également Excel 2010.

2voto

sigil Points 2197

J'ai trouvé une solution temporaire qui me permettra au moins de traiter ce travail. J'ai écrit un court script d'AutoIt qui attend que la fenêtre "Update Links" apparaisse, puis clique sur le bouton "Don't Update". Le code est le suivant :

while 1
if winexists("Microsoft Excel","This workbook contains links to other data sources.") Then
   controlclick("Microsoft Excel","This workbook contains links to other data sources.",2)
EndIf
WEnd

Jusqu'à présent, cela semble fonctionner. Mais j'aimerais vraiment trouver une solution entièrement en VBA, afin de pouvoir en faire une application autonome.

2voto

JDF Points 129

J'espère pouvoir apporter une contribution supplémentaire à la résolution de cette question (ou d'une partie de celle-ci).

Cela fonctionnera pour ouvrir un Excel d'un autre. Une ligne de code de M. Peter L. pour le changement, utilisez ce qui suit :

Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=3

Ceci est en MSDS . L'effet est qu'il met tout à jour (oui, tout) sans aucun avertissement. Ceci peut également être vérifié si vous enregistrez une macro.

En MSDS Il s'agit de MS EXCEL 2010 y 2013 . Je pense que MS EXCEL 2016 s'en occupe également.

J'ai MS EXCEL 2013 et je me trouve dans une situation à peu près identique à celle de ce sujet. J'ai donc un fichier (que j'appelle A ) avec Workbook_Open code d'événement qui reste toujours bloqué sur le demande de mise à jour des liens . J'ai un autre fichier (appelé B ) connecté à celui-ci, et Tableaux croisés dynamiques me forcer à ouvrir le fichier A pour que le modèle de données puisse être chargé. Puisque je veux ouvrir le A silencieusement en arrière-plan, j'utilise simplement la ligne que j'ai écrite plus haut, avec un Windows("A.xlsx").visible = false et, en dehors d'un temps de chargement plus important, j'ouvre l'application A à partir du fichier B sans problème ni avertissement, et entièrement mis à jour.

-1voto

paynod Points 19

Juste pour mettre en garde contre cette conversation. Pour supprimer la notification des liens de mise à jour, vous pouvez faire quelque chose comme ceci dans workbook_open().

Private Sub workbook_Open()
Application.ThisWorkbook.UpdateLinks = xlUpdateLinksNever 
#Your code goes here
Application.ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
End Sub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X