У меня есть код в VB, который сохраняет все файлы XLSM как XLSX. У меня уже есть код, который будет делать это для меня, но диалоговые окна отображаются для каждого действия. Это было хорошо для нескольких десятков файлов. Тем не менее, я собираюсь использовать это на сотнях XLSM файлов одновременно, и я не могу просто сидеть за компьютером весь день, щелкая диалоговые окна снова и снова.
Код, который я пробовал, в значительной степени:
Application.DisplayAlerts = False
Хотя это не вызывает ошибки, оно также не работает.
Ящики предупреждают о включении макросов, а также предупреждают, что сохранение, поскольку XLSX разбивает файл всех макросов. Учитывая тип предупреждений, я подозреваю, что они запретили отключать эти диалоговые окна из-за угрозы безопасности.
Так как я запускаю этот код в редакторе Excel VB, возможно, есть опция, которая позволит мне отключить диалоговые окна для отладки?
Я также пробовал:
Application.DisplayAlerts = False
Application.EnableEvents = False
' applied code
Application.DisableAlerts = True
Application.EnableEvents = True
Ни один из них не работал.
Edit:
Вот что выглядит код выше в моем текущем коде:
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
Я также окружил цикл For
, в отличие от строки ActiveWorkbook.SaveAs
:
Public Sub example()
For Each element In sArray
XLSMToXLSX(element)
Next element
End Sub
Наконец, я переместил Application.DisplayAlerts
над строкой Workbooks.Open
:
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
Ни один из них не работает.
Edit:
Я использую Excel для Mac 2011, если это помогает.