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
Cancel
in der routine. vielleicht möchten Sie Cancel
True, so dass excel nicht tun es auf eigene speichernGuter Punkt! Danke!
InformationsquelleAutor Frank D. | 2013-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowie Einstellung
Cancel = True
um zu verhindern, dass die Standard-save-Verhalten hinzufügen:um zu verhindern, dass die gleiche Prozedur aufgerufen wird, wieder (und wieder..). Dies ist wahrscheinlich, warum es abstürzt.
InformationsquelleAutor Andy G