Wie unterdrückt man Update Links Warnung?
Ich versuche, ein Skript schreiben, das öffnet viele Excel-Dateien. Ich bekomme immer wieder die Aufforderung:
This workbook contains links to other data sources.
Will ich weiterhin diese Meldung erscheinen, so dass mein Skript kann nur automatisch gehen Sie durch alle Arbeitsmappen, ohne dass ich klicken Sie auf Don't Update
für jeden. Derzeit verwende ich die folgenden:
function getWorkbook(bkPath as string) as workbook
Application.EnableEvents=False
Application.DisplayAlerts=False
getWorkbook=Workbooks.Open(bkPath,updatelinks:=0,readonly:=false)
end function
Jedoch die Meldung immer noch erscheint. Wie kann ich das unterdrücken?
EDIT: Es scheint, dass diese Nachricht kommt für Arbeitsmappen, die defekte links; ich war nicht zu sehen, die This workbook contains one or more links that cannot be updated
Meldung, weil ich, ich DisplayAlerts
auf false. Die Arbeitsmappen verknüpft sind, entspricht der Dateien in einem Ordner auf unserem Windows-server, so dass, wenn die passende Datei ist gelöscht, der Ordner (was geschieht, als Teil unseres business-flow), der link bricht. Ist es möglich, unterdrückt die Warnung, wenn der link defekt ist?
Auch, ich bin mit Excel 2010.
InformationsquelleAutor der Frage sigil | 2013-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE:
Nachdem alle details zusammengefasst und diskutiert, verbrachte ich 2 öffnungszeiten bei der Prüfung der Optionen, und dieses update ist der Punkt alle
i
s.Vorbereitungen
Zunächst führte ich eine saubere Office 2010 x86 installieren auf einer Sauberen Win7 SP1 Ultimate x64 virtual machine powered by VMWare (dies ist die übliche routine für meine täglichen Prüfaufgaben, so habe ich viele von Ihnen bereitgestellt).
Dann, ich änderte nur die folgenden Excel-Optionen (d.h. alle anderen sind Links wie nach der installation):
Advanced > General > Ask to update automatic links
überprüft:Trust Center > Trust Center Settings... > External Content > Enable All...
(obwohl, dass man sich auf die Daten-Verbindungen ist wahrscheinlich nicht wichtig für den Fall):Voraussetzungen
Ich vorbereitet und platziert, um
C:\
eine Arbeitsmappe, genau wie nach@Siddharth Rout
Vorschläge in seine aktualisierte Antwort (gemeinsam für Ihre Bequemlichkeit): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx Verlinkten Buch wurde dann gelöscht so, dass der link in der freigegebenen Buch nicht verfügbar ist (sicher).Manuelle Öffnung
Den oben genannten gemeinsam genutzten Datei zeigt beim öffnen (mit der oben genannten Excel-Optionen) 2 Warnungen - in der Reihenfolge des Auftretens:
WARNUNG #1
Nach Klick auf
Update
ich erwartungsgemäß noch ein anderes:WARNUNG #2
So, ich nehme an, meine Testumgebung ist nun so ziemlich ähnlich
OP
's) So weit So gut, wir nun endlich zuVBA Öffnen
Nun werde ich versuchen alle möglichen Optionen Schritt für Schritt, um das Bild zu löschen. Ich werde teilen, nur die relevanten code-Zeilen für die Einfachheit (komplette Datei mit dem code wird freigegeben, am Ende).
1. Einfache Anwendung.Arbeitsmappen.Öffnen
Kein Wunder - diese produziert SOWOHL Warnungen als für die manuelle öffnung oben.
2. - Anwendung.DisplayAlerts = False
Dieser code endet mit WARNUNG #1, und entweder option angeklickt (
Update
/Don't Update
) bringt KEINE weiteren Warnungen, d.h.Application.DisplayAlerts = False
unterdrückt WARNUNG #2.3. - Anwendung.AskToUpdateLinks = False
Gegenüber
DisplayAlerts
dieser code endet mit WARNUNG #2 nur, d.h.Application.AskToUpdateLinks = False
unterdrückt WARNUNG #1.4. Doppelt Falsch
Offenbar, dieser code endet mit der Unterdrückung SOWOHL WARNUNGEN als.
5. UpdateLinks:=False
Schließlich, diese 1-line-Lösung (ursprünglich von
@brettdj
) funktioniert auf die gleiche Weise wie Doppelt Falsch: KEINE WARNUNGEN werden angezeigt!!!Schlussfolgerungen
Außer eine gute Prüfung der Praxis und sehr wichtig, gelöst der Fall ist (ich kann vor solchen alltäglichen Probleme beim versenden meiner Arbeitsmappen zu 3rd-party, und jetzt bin ich vorbereitet), 2 weitere Dinge gelernt:
Vielen Dank an alle, die dazu beigetragen, die Lösung, und vor allem der OP, der die Frage aufgeworfen. Hoffe, dass meine Untersuchungen und gründlich beschriebenen Prüfschritte waren hilfreich, nicht nur für mich)
Beispiel-Datei mit dem obigen code samples freigegeben ist (viele Zeilen sind kommentiert bewusst): https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
Ursprüngliche Antwort (getestet für Excel 2007 mit bestimmten Optionen):
Dieser code funktioniert gut für mich - es ist eine Schleife über ALLE Excel-Dateien die Angabe von wildcards in die
InputFolder
:Versuchte ich es mit Büchern nicht verfügbar mit externen links - keine Warnungen.
Beispieldatei: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
InformationsquelleAutor der Antwort Peter L.
Öffnen Sie den VBA-Editor von Excel und geben Sie Folgendes in das Direktfenster (Siehe Screenshot)
Schließen Sie Excel und öffnen Sie die Datei. Es wird nicht wieder aufgefordert. Denken Sie daran, um es zurückzusetzen, wenn Sie die Arbeitsmappe schließen sonst wird es nicht funktionieren, für andere Arbeitsmappen als gut.
ScreenShot:
BEARBEITEN
Also die Anwendung, um Ihren code, Ihr code wird wie folgt Aussehen
FOLLOWUP
Siegel, Der code unten funktioniert auf Dateien mit kaputten links sowie. Hier ist mein test-code.
Test-Bedingungen
Sample1.xlsx
undSample2.xlsx
und speichern Sie Sie aufC:\
A1
vonSample1.xlsx
geben Sie diese Formel='C:\[Sample2.xlsx]Sheet1'!$A$1
Sample
. Sie werden feststellen, dass Sie nicht bekommen, eine Eingabeaufforderung.Code
InformationsquelleAutor der Antwort Siddharth Rout
Wollte ich unterdrückt die Eingabeaufforderung, die fragt, ob Sie aktualisieren möchten, die Verknüpfungen zu einer anderen Arbeitsmappe, wenn meine Arbeitsmappe manuell in Excel geöffnet (im Gegensatz zu öffnen programmgesteuert über VBA). Ich habe versucht, einschließlich:
Application.AskToUpdateLinks = False
als erste Zeile in meinemAuto_Open()
makro, aber das hat nicht funktioniert. Ich entdeckte jedoch, dass, wenn man es statt in derWorkbook_Open()
Funktion in derThisWorkbook
Modul, es funktioniert hervorragend - der dialog unterdrückt wird, aber das update immer noch Auftritt, leise im hintergrund.InformationsquelleAutor der Antwort Renwick Wright
Excel-2016
Ich hatte ein ähnliches problem, wenn ich erstellte eine Arbeitsmappe/Datei und dann habe ich die Namen geändert, aber irgendwie ist der alte name der Arbeitsmappe gehalten wurde.
Nach viel googeln... er fand keine endgültige Antwort gibt.
Gehen Sie auf DATEN -> Bearbeiten -> Start-Eingabeaufforderung (ganz unten) wählen Sie Dann die beste option für Sie.
InformationsquelleAutor der Antwort user2060451
Habe ich gefunden, eine temporäre Lösung, lass mich wenigstens Prozess dieser Arbeit. Ich schrieb ein kurzes AutoIt-script, das wartet, bis der "Update-Links" - Fenster erscheint, klickt dann auf "nicht Aktualisieren" - button. Code ist wie folgt:
Bisher scheint dies zu funktionieren. Ich würde wirklich gerne eine Lösung finden, die ganz von VBA, aber so, dass ich machen kann dies eine standalone-Anwendung.
InformationsquelleAutor der Antwort sigil
Hoffnung zu geben, einige zusätzliche Eingabe bei der Lösung dieser Frage (oder ein Teil davon).
Dieser Arbeit wird für die Eröffnung eines
Excel
Datei von einem anderen. Eine Zeile code aus Herr Peter L., für die ändern, verwenden Sie die folgende:Dies ist in
MSDS
. Der Effekt ist, dass es nur updates, alles (ja, alles) ohne Vorwarnung. Dies kann auch überprüft werden, wenn Sie ein makro aufzeichnen.In
MSDS
es bezieht sich dies aufMS EXCEL 2010
und2013
. Ich denke, dassMS EXCEL 2016
hat dieser auch bedeckt.Habe ich
MS EXCEL 2013
, und haben die situation so ziemlich das gleiche wie in diesem Thema. Also ich habe eine Datei (nennen wir ihnA
) mitWorkbook_Open
Ereignis-code, die immer stecken geblieben ist auf der aktualisieren von Verknüpfungen-Eingabeaufforderung.Ich habe noch eine Datei (nennen wir ihn
B
) verbunden werden, und Pivot-Tabellen mich zwingen, die Datei zu öffnenA
so dass das Datenmodell geladen werden können. Da ich das öffnen willA
- Datei, die im hintergrund, habe ich einfach die Zeile, die ich oben schrieb, mit einerWindows("A.xlsx").visible = false
, und, abgesehen von einer größeren Ladezeit, öffne ich dieA
Datei aus derB
Datei mit dem keine Probleme oder Warnungen, und vollständig aktualisiert.InformationsquelleAutor der Antwort JDF