У меня есть код в VB, который сохраняет все файлы XLSM как XLSX. У меня уже есть код, который сделает это за меня, но диалоговые окна появляются для каждого действия. Это было нормально для нескольких десятков файлов. Тем не менее, я собираюсь использовать это для сотен файлов XLSM одновременно, и я не могу просто сидеть за своим компьютером весь день, снова и снова щелкая диалоговые окна.
Код, который я пробовал, довольно много:
Application.DisplayAlerts = False
Хотя это не вызывает ошибки, это также не работает.
В полях содержится предупреждение о включении макросов, а также предупреждение о том, что сохранение в формате XLSX удаляет из файла все макросы. Учитывая тип предупреждений, я подозреваю, что они ограничили отключение этих диалоговых окон из-за угрозы безопасности.
Поскольку я запускаю этот код в редакторе VB Excel, возможно, есть вариант, который позволит мне отключить диалоговые окна для отладки?
Я также пробовал:
Application.DisplayAlerts = False
Application.EnableEvents = False
' applied code
Application.DisableAlerts = True
Application.EnableEvents = True
Ни один из них не работал.
Изменить:
Вот как код выше выглядит в моем текущем коде:
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
Ни один из них не работает.
Изменить:
Я использую Excel для Mac 2011, если это поможет.