ACTUALIZAR:
Después de todos los detalles resumidos y discutidos, pasé 2 horas revisando las opciones, y esta actualización es para salpicar todos los i
s.
Preparativos
En primer lugar, realicé una instalación limpia de Office 2010 x86 en la máquina virtual Clean Win7 SP1 Ultimate x64 con tecnología VMWare (esta es una rutina habitual para mis tareas de prueba diarias, por lo que tengo muchas de ellas implementadas).
Luego, cambié solo las siguientes opciones de Excel (es decir, todas las demás se dejan como están después de la instalación):
Advanced > General > Ask to update automatic links
comprobado :
Trust Center > Trust Center Settings... > External Content > Enable All...
(aunque el que se relaciona con las conexiones de datos probablemente no sea importante para el caso):
Condiciones previas
Lo preparé y lo coloqué en C:\
un libro de trabajo exactamente según las @Siddharth Rout
sugerencias en su respuesta actualizada (compartida para su conveniencia): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx El libro vinculado se eliminó para que el enlace en el compartido el libro no está disponible (seguro).
Apertura manual
El archivo compartido anterior se muestra al abrir (con las opciones de Excel enumeradas anteriormente) 2 advertencias, en el orden de aparición:
ADVERTENCIA # 1
Después de hacer clic en Update
, esperaba otro:
ADVERTENCIA # 2
Entonces, supongo que mi entorno de prueba ahora es bastante similar al OP
de) Hasta ahora todo bien, finalmente vamos a
Apertura de VBA
Ahora probaré todas las opciones posibles paso a paso para aclarar la imagen. Compartiré solo las líneas de código relevantes para simplificar (el archivo de muestra completo con el código se compartirá al final).
1. Aplicación simple. Libros de trabajo. Abierto
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
No es de extrañar: esto produce AMBAS advertencias, como para la apertura manual anterior.
2. Application.DisplayAlerts = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Este código termina con ADVERTENCIA # 1 , y cualquiera de las opciones que se hace clic ( Update
/ Don't Update
) NO produce más advertencias, es decir, Application.DisplayAlerts = False
suprime la ADVERTENCIA # 2 .
3. Application.AskToUpdateLinks = False
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
En oposición a DisplayAlerts
, este código termina con la ADVERTENCIA # 2 solamente, es decir, Application.AskToUpdateLinks = False
suprime la ADVERTENCIA # 1 .
4. Doble falso
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
Aparentemente, este código termina suprimiendo AMBAS ADVERTENCIAS .
5. UpdateLinks: = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
Finalmente, esta solución de 1 línea (propuesta originalmente por @brettdj
) funciona de la misma manera que Double False: ¡ NO se muestran ADVERTENCIAS !
Conclusiones
Excepto una buena práctica de prueba y un caso resuelto muy importante (puedo enfrentar estos problemas todos los días mientras envío mis libros de trabajo a un tercero, y ahora estoy preparado), aprendí 2 cosas más:
- Las opciones de Excel SI importan, independientemente de la versión, especialmente cuando hablamos de soluciones VBA.
- Cada problema tiene una solución corta y elegante, junto con una no obvia y complicada. ¡Solo una prueba más de eso!)
Muchas gracias a todos los que contribuyeron a la solución, y especialmente a OP que planteó la pregunta. Espero que mis investigaciones y los pasos de prueba descritos a fondo hayan sido útiles no solo para mí)
Se comparte el archivo de muestra con los ejemplos de código anteriores (muchas líneas se comentan deliberadamente): https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
Respuesta original (probado para Excel 2007 con ciertas opciones):
Este código funciona bien para mí: recorre TODOS los archivos de Excel especificados con comodines en 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
Lo probé con libros con enlaces externos no disponibles, sin advertencias.
Archivo de muestra: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm