Необходимо макросом открыть файл .xlsm и сохранить в другой папке как .xlsx без макросов и всё это произвести в фоне, без отображения. Поиск помог создать 2 варианта, оба работают, но:
Код
sFileName$ = "G:\888.xlsm"
sNewFileName$ = "G:\111\999.xlsx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set objExcel = New Excel.Application
Set myEx = objExcel.Workbooks.Open(sFileName)
myEx.SaveAs FileName:=sNewFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Set myEx = Nothing
Set objExcel = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
В первом варианте всё равно выскакивает запрос на сохранение без макросов, как убрать.
При закрытии книги укажите сохранение ActiveWorkbook.Close (True)
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Sub DeleteModulesInFiles()
Dim iPath$, book As Workbook
Dim ikey, sPath$, fName$, sName$
Application.DisplayAlerts = False
Application.ScreenUpdating = False
iPath = "G:\"
sPath = "D:\111\"
fName = "888.xlsm"
sName = "999.xlsm"
Set book = Workbooks.Open(iPath & fName)
book.SaveAs FileName:=sPath & sName
With book
For Each ikey In .VBProject.VBComponents
Select Case ikey.Type
Case 1 To 3: ikey.Collection.Remove ikey
End Select
Next ikey
.Close True
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄