Fehler beim Speichern einer XLSM-Datei als CSV beim Abrufen der Methode "Speichern des Objekts _workbook fehlgeschlagen&quo

Ich versuche, eine (makrofähige) Excel-Arbeitsmappe über dieses Makro als CSV-Datei zu speichern und überschreibe die alte (unten hatte ich die Änderung des Ordnernamens und des Arbeitsblatts, aber das scheint nicht zu sein die Angelegenheit!)

 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

Seltsamerweise manchmal, aber nicht immer, schlägt fehl und die Fehlermeldung des Titels Laufzeitfehler 1004: Methodensicherungen des Objekts _workbook fehlgeschlagen) erscheint mit dem Debugger, der mich auf diese Zeile hinweist:

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

Ich habe es gegoogelt und anscheinend passiert es vielen Leuten und einige der Lösungen, die ich ausprobiert habe, waren:

Angeben, dass das Verzeichnis eine Zeichenfolge ist Vermeiden Sie Sonderzeichen im Dateinamen oder Ordner (gesehenHie) Kopieren Sie das Arbeitsblatt als Wert, bevor Sie es als CSV-Datei speichern (sieheHie)Specifying the FileFormat mit der .csv-Codenummer (gesehenHie) Deaktivieren / erneutes Aktivieren einiger WarnungenHinzufügen weiterer Felder in der Zeile ActiveWorkbook.SaveAs in Bezug auf Kennwörter, Erstellen von Sicherungen usw.

Still, es kann bis zu 50-60 Mal hintereinander korrekt ausgeführt werden und dann an einem bestimmten Punkt in der Zeile erneut fehlschlagen.

Alle Vorschläge oder Dinge, nach denen ich suchen könnte, um dieses Problem zu lösen (außer, dass VBA / Excel für diese Aufgabe nicht mehr verwendet wird, was bald passieren wird, aber ich kann es vorerst nicht).

ielen Dank im Voraus für Ihre Zei

EDIT: Gelöst dank Degustaf Vorschlag. Ich habe nur zwei Änderungen an Degustafs vorgeschlagenem Code vorgenommen:

ThisWorkbook.Sheets anstelle von CurrentWorkbook.SheetsFileFormat: = 6 anstelle von FileFormat: = xlCSV (ist anscheinend robuster für verschiedene Excel-Versionen)
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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage