SaveAs-Befehl nicht funktioniert, aber SaveCopyAs hat

Ich habe eine Menge von Schwierigkeiten, eine SaveAs Befehl, um richtig zu arbeiten. Für ein Krankenhaus, es gibt Patienten-charts, die aus einer Vorlage erstellt die Datei, in der Patientendaten eingegeben werden und danach manuell umbenannt (mit speichern) und dann an eine andere Stelle kopiert, als backup. Die Vorlage ist neu-immer und immer wieder verwendet.

Dem Ziel, mein code ist, diesen Prozess zu automatisieren. Deshalb will ich sparen an zwei verschiedenen Standorten, ausgehend von einer Vorlage-Datei. Die template-Datei sollte nicht überschrieben werden. In der Vorlage, ein Benutzer legt die Abteilung den Namen und bed Zahl in Zelle K1 und N1 , repectively. Diese Felder bestimmen Sie die Ordner-und Dateinamen in diesem Ordner.

Wenn der button speichern gedrückt wird, meinen code zu laufen beginnt. Ich benutze SaveCopyAs speichern der backup-Datei und nach, dass ich verwenden möchten, speichern unter zu speichern, zu meinem primären Ordner. SaveAs sollte die neue Datei, um meine arbeiten Datei, daher nicht überschreiben meinem template. Das ist zumindest das, was ich glaube...

DAS PROBLEM: Beim ausführen SaveAs Excel abstürzt (ohne klare Fehlermeldung). Das merkwürdige (für mich) ist, dass Sie nicht Abstürzen, wenn ich ersetzen SaveAs mit SaveCopyAs.

DIE FRAGE: Warum macht Excel Absturz an dieser Stelle? Gibt es eine Möglichkeit zu beheben oder zu vermeiden, dieses Verhalten? Ich kann nicht finden eine geeignete Lösung, dass ändert nichts an meinem template. Jede Hilfe oder Anregungen sind mehr als willkommen.

Den code unten platziert ist, in meinem "DieseArbeitsmappe" - Ordner und wird ausgeführt, jedes mal, wenn ich auf die "speichern"-button.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    department = Range("K1").Value 'Name of department: CHIC, THIC, ICB or NCIC
    bedNumber = Range("N1").Value 'bednumber or roomnumber: Bed 1. Bed 2 or Room 1, Room 2.
    newFileName = department & "\" & bedNumber & ".xls"

    If IsEmpty(department) Then
        MsgBox "You haven't entered a department. Please try again."
    ElseIf IsEmpty(bedNumber) Then
        MsgBox "You haven't entered a bed or room number. Please try again."
    Else
        ActiveWorkbook.SaveCopyAs "C:\myBackupFolder\" + newFileName
    End If


    ActiveWorkbook.SaveAs "C:\myPrimaryFolder\" + newFileName 'Doesn't work

    'ActiveWorkbook.SaveCopyAs "C:\myPrimaryFolder\" + newFileName 'Does work, but I end up with a messed up template!
End Sub
Ich merke, Sie setzen nicht Cancel in der routine. vielleicht möchten Sie Cancel True, so dass excel nicht tun es auf eigene speichern
Guter Punkt! Danke!

InformationsquelleAutor Frank D. | 2013-07-03

Schreibe einen Kommentar