Ошибка «метод saveas объекта _workbook failed» при попытке сохранить XLSM как CSV

Я пытаюсь сохранить (с поддержкой макросов) книгу Excel в виде csv-файла через этот макрос, перезаписывая старую (ниже у меня было изменение имени папки и листа, но это не похоже на выпуск):

 Sub SaveWorksheetsAsCsv()

 Dim SaveToDirectory As String
 Dim CurrentWorkbook As String
 Dim CurrentFormat As Long

 CurrentWorkbook = ThisWorkbook.FullName
 CurrentFormat = ThisWorkbook.FileFormat
 SaveToDirectory = "\MyFolder\"

 Application.DisplayAlerts = False
 Application.AlertBeforeOverwriting = False

 Sheets("My_Sheet").Copy

 ActiveWorkbook.SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV
 ActiveWorkbook.Close SaveChanges:=False
 ThisWorkbook.Activate

 ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat

 Application.DisplayAlerts = True
 Application.AlertBeforeOverwriting = True

 End Sub

Как ни странно, иногда, но не всегда, происходит сбой и сообщение об ошибке заголовка (Ошибка выполнения 1004: сбой метода метода объекта _workbook) появляется отладчик, указывающий мне на эту строку:

 ActiveWorkbook.SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV

Я погуглил это, и, видимо, это часто случается с людьми, и некоторые из решений, которые я попробовал, были:

Указывая, что каталог является строкойИзбегайте каких-либо специальных символов в имени файла или папки (видноВот)Скопируйте и вставьте лист в качестве значения, прежде чем сохранить его в формате .csv (видноВот)Указание FileFormat с кодом .csv (видноВот)Отключение / повторное включение некоторых оповещенийДобавление других полей в строку ActiveWorkbook.SaveAs, касающихся паролей, создание резервных копий и т. Д.

Тем не менее, он может корректно работать до 50-60 раз подряд, а затем в какой-то момент снова потерпеть неудачу в ряду.

Любое предложение или вещи, которые я мог бы найти, чтобы решить эту проблему (кроме прекращения использования VBA / Excel для этой задачи, что произойдет в ближайшее время, но я пока не могу).

Спасибо заранее за ваше время.

РЕДАКТИРОВАТЬ: Решено благодаря предложению Degustaf. Я сделал только два изменения в предложенном коде Дегустафа:

ThisWorkbook.Sheets вместо CurrentWorkbook.SheetsFileFormat: = 6 вместо FileFormat: = xlCSV (очевидно, более устойчив к различным версиям Excel)
Sub SaveWorksheetsAsCsv()

Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
Dim TempWB As Workbook

Set TempWB = Workbooks.Add

CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
SaveToDirectory = "\\MyFolder\"

Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False

ThisWorkbook.Sheets("My_Sheet").Copy Before:=TempWB.Sheets(1)
ThisWorkbook.Sheets("My_Sheet").SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=6
TempWB.Close SaveChanges:=False

ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
ActiveWorkbook.Close SaveChanges:=False

Application.DisplayAlerts = True
Application.AlertBeforeOverwriting = True

End Sub

Ответы на вопрос(1)

Ваш ответ на вопрос