Erste "saveas-Methode von Objekt _workbook ist fehlgeschlagen" Fehler beim speichern als CSV-Datei XLSM

Ich versuche zu speichern (mit aktivierten Makros) excel-Arbeitsmappe als csv-Datei über das makro überschreiben Sie dabei die alte (unten hatte ich die ändern den Namen des Ordners, und das Blatt, aber das scheint nicht das Problem sein!):

 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

Seltsam genug, manchmal, aber nicht immer, es schlägt fehl, und die Fehlermeldung des Titels (Laufzeitfehler 1004: die Methode saveas von Objekt _workbook ist fehlgeschlagen), erscheint der debugger verweist mich aus dieser Zeile:

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

Ich es gegoogelt und anscheinend nicht viel passieren, um Menschen, und einige von den Lösungen, die ich versucht wurden:

  • Angabe, dass das Verzeichnis ein string
  • Vermeiden Sie jegliche Sonderzeichen in den Namen der Datei oder des Ordners (gesehen hier)
  • Kopieren Sie das Arbeitsblatt als Wert vor dem speichern als .csv-Datei (gesehen hier)
  • Die Angabe der Dateiformat mit der .csv-code-Nummer (gesehen hier)
  • Deaktivieren/Re-enabling einige der Warnungen
  • Das hinzufügen weiterer Felder in das ActiveWorkbook.SaveAs-Zeile, in Bezug auf Passwörter, das erstellen von backups etcetc

Immer noch, es möglicherweise korrekt ausgeführt, bis zu 50-60 mal in einer Reihe, und dann an einem gewissen Punkt scheitern immer wieder an der Reihe.

Jede suggetion oder Dinge, die könnte ich nachschlagen, um dieses problem zu lösen (außer halt mit VBA/Excel für diese Aufgabe, und das wird bald passieren, aber ich kann nicht für jetzt).

Dank im Voraus für Ihre Zeit.

EDIT: Gelöst Dank Degustaf Vorschlag. Ich habe nur zwei änderungen Degustaf vorgeschlagene code:

  • "ThisWorkbook".Blätter statt CurrentWorkbook.Blätter
  • FileFormat:=6 statt FileFormat:=xlCSV (anscheinend ist robuster
    auf differente Versionen von 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
Jungs, danke an Euch beide für Eure Antworten. Ich habe keine Zeit, versuchen das jetzt tut, wird morgen tun und erhalten Sie zurück.
Ich kann nicht abstimmen, bis Sie beide sich aufgrund meines rep Ebene, trotzdem danke für deine Hilfe. Degustaf Lösung aussieht, es hat den trick! Getestet habe ich es über 100 mal, und es ist nicht zu Versagen. Ich fügte hinzu, auf die Frage über das bearbeitete und readapted code von Degustaf Antwort. Aus irgendeinem Grund JMMach war noch das problem verursacht.

InformationsquelleAutor Riccardo | 2015-03-10

Schreibe einen Kommentar