Добрый день. У меня есть макрос, который копирует содержимое листа, заменяет формулы значениями, убирает объекты и сохраняет файл с названием из ячейки.
В Excel 2013 он отрабатывает нормально (на двух компьютерах), а на Excel 2007 и Excel for Mac выдает ошибку "Run-time error 1004". Debug показывает строчку "cFileName =" Как можно это исправить?
Код
Sub SaveActiveSheetWithValuesAndFormats2()
' Сохранить лист в отдельную книгу, сохранить только значения и оформление
Dim sh As Worksheet, wbNew As Workbook, cFileName As Variant
Set sh = ActiveSheet
cFileName = Application.GetSaveAsFilename(Range("B2").Value + "_import", "Книга Microsoft Office Excel (*.xls), *.xls")
If cFileName = False Then Exit Sub
Application.ScreenUpdating = False
' Копируем лист (при этом создается новый файл с этим листом)
sh.Copy
Set wbNew = ActiveWorkbook
' Заменяем формулы значениями
With wbNew.Sheets(1).UsedRange.Cells
.Value = .Value
End With
'Удаляем ВСЕ объекты на листе
Dim oSh As Object
For Each oSh In ActiveSheet.Shapes
oSh.Delete
Next
' Сохраняем файл
Application.DisplayAlerts = False
wbNew.SaveAs Filename:=(cFileName), FileFormat:=xlNormal
' Закрываем файл и возвращаемся в начало
wbNew.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
sh.Activate
End Sub
кстати у меня он как-то странно отрабатывает в пошаговом режиме - запускаю через F8, открывает окно запроса, и при нажатии "Сохранить" дальше выполняет весь макрос без остановки до конца. Если поставить брейк-поинт на следующей строке - останавливается. Если файл с таким именем уже открыт - он, похоже, и будет ругаться, но не в этом месте и с другой ошибкой.
The_Prist, вот, точно: 'Note: InitialFilename is the only parameter that works on a Mac соответственно на Маке синтаксис другой, увы. А вот на 2007 отловить не удалось.