Сохранить как не удалось Excel VBA
-Резюме: я пытаюсь написать код, который будет автоматически сохранять с именем текущей даты
-Проблема: появляется ошибка "Метод" Сохранить как "объекта" _Workbook "не открывается", когда компилятор достигает строки сохранения. Все остальное работает. Я показал всю функцию для справки.
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
-Я добавил в метод преобразования в строку на дату, потому что я думал, что это может быть причиной проблемы, но имел тот же результат. Дайте мне знать, если вы видите здесь что-то не так. Спасибо!
2 ответа
Проблема: потому что в моем коде я отключал запросы от Excel, когда я пытался сохранить, я не видел подсказки, говорящей мне, что я пытался сохранить в неправильном формате.
Подводя итог, Excel не понравилось, что у меня в имени есть обратная косая черта ("/") (которую я действительно должен был знать)
Исправление: я закончил тем, что использовал это утверждение:
ActiveWorkbook.SaveAs Filename:="Z:...\" & "Chase " & _
Month(theDate) & "_" & Day(theDate) & "_" & Year(theDate) & ".xlsx"
Таким образом, все, что я действительно сделал здесь, было пост месяца, дня и года вместе в строку, разделенную подчеркиванием, чтобы избежать обратной косой черты.
Спасибо за вашу помощь, Гаффи!
Вы пробовали что-то подобное?
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"
, но вы можете использовать другие форматы, если это необходимо.
Объяснение:
theDate
имеет тип Date
(увидеть: Dim theDate As Date
), поэтому при использовании используется полная строка формата даты / времени CStr()
, Это приведет к чему-то вроде этого:
Debug.Print CStr(Now())
7/6/2012 7:23:38 AM
Что, вероятно, приведет к тому, что ваша система отклонит допустимые символы в имени файла.