¿Deshabilitar todos los cuadros de diálogo en Excel mientras ejecuta el script VB?
Tengo un código en VB que guarda todos los archivos XLSM como XLSX. Ya tengo el código que hará eso por mí, pero aparecen cuadros de diálogo para cada acción. Esto estuvo bien para unas pocas docenas de archivos. Sin embargo, voy a usar esto en cientos de archivos XLSM a la vez, y no puedo quedarme sentado en mi computadora todo el día haciendo clic en cuadros de diálogo una y otra vez.
El código que probé es más o menos:
Application.DisplayAlerts = False
Si bien esto no causa un error, tampoco funciona.
Los cuadros dan una advertencia sobre la habilitación de macros, y también advierten que guardar como XLSX elimina el archivo de todas las macros. Teniendo en cuenta el tipo de advertencias, sospecho que han restringido la desactivación de esos cuadros de diálogo debido al riesgo de seguridad.
Dado que estoy ejecutando este código en el editor VB de Excel, ¿hay alguna opción que me permita deshabilitar los cuadros de diálogo para la depuración?
También he intentado:
Application.DisplayAlerts = False
Application.EnableEvents = False
' applied code
Application.DisableAlerts = True
Application.EnableEvents = True
Ninguno de los dos funcionó.
Editar:
Así es como se ve el código anterior en mi código actual:
Public Sub example()
Application.DisplayAlerts = False
Application.EnableEvents = False
For Each element In sArray
XLSMToXLSX(element)
Next element
Application.DisplayAlerts = False
Application.EnableEvents = False
End Sub
Sub XLSMToXLSX(ByVal file As String)
Do While WorkFile <> ""
If Right(WorkFile, 4) <> "xlsx" Then
Workbooks.Open Filename:=myPath & WorkFile
Application.DisplayAlerts = False
Application.EnableEvents = False
ActiveWorkbook.SaveAs Filename:= _
modifiedFileName, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Application.EnableEvents = True
ActiveWorkbook.Close
End If
WorkFile = Dir()
Loop
End Sub
También rodeé elFor
bucle, a diferencia de laActiveWorkbook.SaveAs
línea:
Public Sub example()
For Each element In sArray
XLSMToXLSX(element)
Next element
End Sub
Finalmente, cambié elApplication.DisplayAlerts
sobre elWorkbooks.Open
línea:
Sub XLSMToXLSX(ByVal file As String)
Do While WorkFile <> ""
If Right(WorkFile, 4) <> "xlsx" Then
Workbooks.Open Filename:=myPath & WorkFile
Application.DisplayAlerts = False
Application.EnableEvents = False
ActiveWorkbook.SaveAs Filename:= _
modifiedFileName, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Application.EnableEvents = True
ActiveWorkbook.Close
End If
WorkFile = Dir()
Loop
End Sub
Ninguno de esos funciona tan bien.
Editar:
Estoy usando Excel para Mac 2011, si eso ayuda.