另存为失败的Excel VBA

总结 :我正在尝试编写代码,它会自动保存当前date的名称

问题 :当编译器到达保存的行时,popup“对象_Workbook'失败”的方法'SaveAs'错误。 其他一切正常。 为了参考,我展示了整个function。

Function createRecord() Dim rowCount As Integer Dim theDate As Date theDate = Format(Now(), "MM-DD-YY") Sheets("New Data").Select Cells.Select Selection.Copy Sheets.Add After:=Sheets(Sheets.Count) Application.ActiveSheet.Name = "ChaseHistory" ActiveSheet.Paste rowCount = ActiveSheet.UsedRange.Rows.Count Sheets("Exceptions").Select 'rowCount = ActiveSheet.UsedRange.Rows.Count Application.CutCopyMode = False ActiveSheet.UsedRange.Rows.Select Selection.Copy Sheets("ChaseHistory").Select ActiveSheet.Range("A" & rowCount + 2).Select ActiveSheet.Paste Range("A1").Select Cells.Select Selection.Copy ChDir "Z:\Customer_Service_Accounting\REPORTING & CONTROLS TEAM\Book And Balance_Katie\Chase Booking History" 'loads the crystal report Workbooks.Open Filename:= _ "Z:\Customer_Service_Accounting\REPORTING & CONTROLS TEAM\Book And Balance_Katie\Chase Booking History\Do_Not_Delete.xlsx" Windows("Do_Not_Delete").Activate ActiveSheet.Paste Application.DisplayAlerts = False '---------------This is the problem child-------------- 'SAVING WORKBOOK ActiveWorkbook.SaveAs Filename:="Z:\Customer_Service_Accounting\REPORTING & CONTROLS TEAM\Book And Balance_Katie\Chase Booking History\" & CStr(theDate), FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False Application.DisplayAlerts = True End Function 

我添加到date转换为string方法,因为我认为这可能会导致问题,但具有相同的结果。 如果您在这里看到任何错误,请告诉我。 谢谢!

问题:因为在我的代码中,我正在禁用来自Excel的提示,当我试图保存时,我没有看到提示,告诉我,我试图用不正确的格式保存。

基本上总结一下,Excel不喜欢我在我的文件名(我真的应该知道)中有反斜杠(“/”),

修正:我结束了使用这个声明:

 ActiveWorkbook.SaveAs Filename:="Z:...\" & "Chase " & _ Month(theDate) & "_" & Day(theDate) & "_" & Year(theDate) & ".xlsx" 

所以我真正在这里做的是把月份,date和年份一起放在一个由下划线分开的string中,以避免反斜杠。

感谢您的帮助Gaffi!

你有没有尝试过这样的事情?

 ActiveWorkbook.SaveAs Filename:="Z:\Customer_Service_Accounting\REPORTING & CONTROLS TEAM\Book And Balance_Katie\Chase Booking History\" & Format(theDate, "mm.dd.yy"), FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False 

要突出显示:我将CStr(theDate)更改为Format(theDate, "mm.dd.yy") & ".xlsx" ,但是如果需要,可以使用其他格式。

说明:

theDatetypes为Date (请参阅: Dim theDate As Date ),因此使用CStr()时返回的是完整的date/时间格式string。 这将导致这样的事情:

 Debug.Print CStr(Now()) 7/6/2012 7:23:38 AM 

这可能会导致您的系统拒绝文件名中的无效字符。