Сохранить файл Xlsm как xlsx

#excel #vba #fso

#excel #vba

Вопрос:

Я хочу сохранить текущий файл xlsm как xlsx, поэтому я написал код, как показано ниже. Этот код действительно выполнил свою работу, и я смог увидеть файл, сохраненный как Myfile.xlsx как то, что я определил в коде, однако есть некоторые небольшие проблемы, когда vba всегда сохраняет файл в другой файл как bookx.xlsx рядом с Myfile.xlsx . Как я могу этого избежать?

 Sub saveAsXlsx()
Dim myPath As String
myPath = Application.ActiveWorkbook.Path
Worksheets(Array("sheet1", "sheet2")).Copy
ActiveWorkbook.SaveCopyAs Filename:=myPath amp; "Myfile.xlsx" 
End Sub
 

Комментарии:

1. Он не создает другой файл, он просто открывает новую книгу с этим именем (BookX.xlsx ). Вам просто нужно закрыть это окно после вашего скрипта.

2. как я могу закрыть это окно ?

3. Activeworkbook. Закрыть False

Ответ №1:

Это позволит избежать дополнительной копии:

 Sub saveAsXlsx()
    Dim myPath As String
    myPath = Application.ActiveWorkbook.Path
    Worksheets(Array("sheet1", "sheet2")).Copy
    ActiveWorkbook.SaveAs Filename:=myPath amp; "Myfile.xlsx"
    ActiveWorkbook.Close
End Sub
 

При этом используются SaveAs, а не SaveCopyAs, поскольку вы уже создали первую копию.