Desativar todas as caixas de diálogo no Excel enquanto executa o script VB?
Eu tenho algum código no VB que salva todos os arquivos XLSM como XLSX. Eu já tenho o código que fará isso por mim, mas as caixas de diálogo são exibidas para cada ação. Isso foi bom para algumas dezenas de arquivos. No entanto, vou usá-lo em centenas de arquivos XLSM de uma só vez e não posso ficar sentado no meu computador o dia inteiro clicando nas caixas de diálogo várias vezes.
O código que eu tentei é basicamente:
Application.DisplayAlerts = False
Enquanto isso não causa um erro, também não funciona.
As caixas emitem um aviso sobre a ativação de macros e também alertam que o salvamento como XLSX retira o arquivo de todas as macros. Considerando o tipo de avisos, suspeito que eles tenham restringido o desativamento dessas caixas de diálogo devido ao risco de segurança.
Como estou executando esse código no editor de VB do Excel, talvez haja uma opção que permita desativar as caixas de diálogo para depuração?
Eu também tentei:
Application.DisplayAlerts = False
Application.EnableEvents = False
' applied code
Application.DisableAlerts = True
Application.EnableEvents = True
Nenhum deles funcionou.
Editar:
Aqui está a aparência do código acima no meu código atual:
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
Eu também rodei oFor
loop, em oposição aoActiveWorkbook.SaveAs
linha:
Public Sub example()
For Each element In sArray
XLSMToXLSX(element)
Next element
End Sub
Finalmente, mudei oApplication.DisplayAlerts
acima deWorkbooks.Open
linha:
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
Nenhum desses funciona também.
Editar:
Estou usando o Excel para Mac 2011, se isso ajudar.