AKTUALISIEREN:
Nachdem alle Details zusammengefasst und diskutiert wurden, habe ich 2 faire Stunden damit verbracht, die Optionen zu überprüfen, und dieses Update soll alle i
s aufzeichnen.
Vorbereitungen
Zunächst führte ich eine saubere Office 2010 x86-Installation auf einer virtuellen VM mit Clean Win7 SP1 Ultimate x64 durch, die von VMWare unterstützt wird (dies ist die übliche Routine für meine täglichen Testaufgaben, daher habe ich viele davon bereitgestellt).
Dann habe ich nur die folgenden Excel-Optionen geändert (dh alle anderen bleiben unverändert nach der Installation):
Advanced > General > Ask to update automatic links
geprüft :
Trust Center > Trust Center Settings... > External Content > Enable All...
(obwohl derjenige, der sich auf Datenverbindungen bezieht, für den Fall höchstwahrscheinlich nicht wichtig ist):
Voraussetzungen
Ich habe C:\
eine Arbeitsmappe genau gemäß den @Siddharth Rout
Vorschlägen in seiner aktualisierten Antwort vorbereitet und platziert (zur Vereinfachung freigegeben): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx Das verknüpfte Buch wurde dann gelöscht, sodass der Link in der freigegebenen Antwort gelöscht wurde Buch ist nicht verfügbar (sicher).
Manuelles Öffnen
Die oben genannte freigegebene Datei zeigt beim Öffnen (mit den oben aufgeführten Excel-Optionen) 2 Warnungen - in der Reihenfolge ihres Auftretens:
WARNUNG # 1
Nach dem Klicken auf habe Update
ich voraussichtlich eine andere bekommen:
WARNUNG # 2
Also, ich nehme an, meine Testumgebung ist jetzt ziemlich ähnlich zu OP
's) Soweit so gut, gehen wir endlich zu
VBA-Eröffnung
Jetzt werde ich Schritt für Schritt alle möglichen Optionen ausprobieren, um das Bild klar zu machen. Der Einfachheit halber werde ich nur relevante Codezeilen freigeben (die vollständige Beispieldatei mit Code wird am Ende freigegeben).
1. Einfache Anwendung.Workbooks.Open
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Kein Wunder - dies erzeugt BEIDE Warnungen, wie beim manuellen Öffnen oben.
2. Application.DisplayAlerts = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Dieser Code endet mit WARNING # 1 , und jede der angeklickten Optionen ( Update
/ Don't Update
) erzeugt KEINE weiteren Warnungen, dh Application.DisplayAlerts = False
unterdrückt WARNING # 2 .
3. Application.AskToUpdateLinks = False
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
Im Gegensatz dazu DisplayAlerts
endet dieser Code nur mit WARNING # 2 , dh er Application.AskToUpdateLinks = False
unterdrückt WARNING # 1 .
4. Double False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
Anscheinend führt dieser Code dazu, dass BEIDE WARNHINWEISE unterdrückt werden .
5. UpdateLinks: = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
Schließlich @brettdj
funktioniert diese 1-Zeilen-Lösung (ursprünglich vorgeschlagen von ) genauso wie Double False: KEINE WARNHINWEISE werden angezeigt!
Schlussfolgerungen
Abgesehen von einer guten Testpraxis und einem sehr wichtigen gelösten Fall (ich kann jeden Tag auf solche Probleme stoßen, wenn ich meine Arbeitsmappen an Dritte sende, und jetzt bin ich vorbereitet), haben 2 weitere Dinge gelernt:
- Excel-Optionen sind unabhängig von der Version von Bedeutung - insbesondere bei VBA-Lösungen.
- Jedes Problem hat eine kurze und elegante Lösung - zusammen mit einer nicht offensichtlichen und komplizierten. Nur noch ein Beweis dafür!)
Vielen Dank an alle, die zur Lösung beigetragen haben, und insbesondere an OP, die die Frage aufgeworfen haben. Ich hoffe, meine Untersuchungen und gründlich beschriebenen Testschritte waren nicht nur für mich hilfreich.
Die Beispieldatei mit den obigen Codebeispielen wird freigegeben (viele Zeilen werden absichtlich kommentiert): 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 - er durchläuft ALLE Excel-Dateien, die mit Platzhaltern in den InputFolder
folgenden Kategorien angegeben wurden :
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
Ich habe es mit Büchern mit nicht verfügbaren externen Links versucht - keine Warnungen.
Beispieldatei: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm