Доброго времени суток уважаемые форумчане, У меня имеется файл под названием "форма", макрос выполняет все что мне нужно, копирует активный лист но со всеми формулами и выпадающими списками. Хотелось бы копирование только значений без формул и выпадающих списков. Где то макрос не выполняется и оставляет все формулы и вып.списки в новой скопированной книге. Помогите подправить тело макроса?
[vba]
Код
Sub Сохранение() On Error Resume Next ' название подпапки, в которую по-умолчанию будет предложено сохранить файл Const REPORTS_FOLDER = "C:Users\Aman\Desktop\Games" ' ?создаём папку для файла, если её ещё нет MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER ' выбираем стартовую папку ChDrive Left(ThisWorkbook.Path, 1): ChDir "C:\Users\Aman\Desktop\Games"
' вывод диалогового окна для запроса имени сохраняемого файла Filename = Application.GetSaveAsFilename("PO-13-.xlsx", "Excel (*.xlsx),", , _ "Введите имя файла для сохраняемого отчёта", "Сохранить") ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл If VarType(Filename) = vbBoolean Then Exit Sub
' копируем активный лист (при этом создаётся новая книга) Err.Clear: ActiveSheet.Copy: DoEvents If Err Then Exit Sub ' произошла какая-то ошибка при попытке копирования листа
' убеждаемся, что активной книгой является копия листа If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then ActiveWorkbook.ActiveSheet.DrawingObjects.Delete ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
' теперь убираем формулы и выпадающие списки с копии листа For Each c In Selection c.FormulaR1C1 = c.Value Next c
' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If End Sub
[/vba]
Доброго времени суток уважаемые форумчане, У меня имеется файл под названием "форма", макрос выполняет все что мне нужно, копирует активный лист но со всеми формулами и выпадающими списками. Хотелось бы копирование только значений без формул и выпадающих списков. Где то макрос не выполняется и оставляет все формулы и вып.списки в новой скопированной книге. Помогите подправить тело макроса?
[vba]
Код
Sub Сохранение() On Error Resume Next ' название подпапки, в которую по-умолчанию будет предложено сохранить файл Const REPORTS_FOLDER = "C:Users\Aman\Desktop\Games" ' ?создаём папку для файла, если её ещё нет MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER ' выбираем стартовую папку ChDrive Left(ThisWorkbook.Path, 1): ChDir "C:\Users\Aman\Desktop\Games"
' вывод диалогового окна для запроса имени сохраняемого файла Filename = Application.GetSaveAsFilename("PO-13-.xlsx", "Excel (*.xlsx),", , _ "Введите имя файла для сохраняемого отчёта", "Сохранить") ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл If VarType(Filename) = vbBoolean Then Exit Sub
' копируем активный лист (при этом создаётся новая книга) Err.Clear: ActiveSheet.Copy: DoEvents If Err Then Exit Sub ' произошла какая-то ошибка при попытке копирования листа
' убеждаемся, что активной книгой является копия листа If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then ActiveWorkbook.ActiveSheet.DrawingObjects.Delete ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
' теперь убираем формулы и выпадающие списки с копии листа For Each c In Selection c.FormulaR1C1 = c.Value Next c
' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If End Sub
KuklP спасибо за участие и подсказку, Переделал макрос, к сожалению не срабатывает.
[vba]
Код
Sub Сохранение() On Error Resume Next ' название подпапки, в которую по-умолчанию будет предложено сохранить файл Const REPORTS_FOLDER = "C:Users\Aman\Desktop\Games" ' ?создаём папку для файла, если её ещё нет MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER ' выбираем стартовую папку ChDrive Left(ThisWorkbook.Path, 1): ChDir "C:\Users\Aman\Desktop\Games"
' вывод диалогового окна для запроса имени сохраняемого файла Filename = Application.GetSaveAsFilename("PO-13-.xlsx", "Excel (*.xlsx),", , _ "Введите имя файла для сохраняемого отчёта", "Сохранить") ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл If VarType(Filename) = vbBoolean Then Exit Sub
' копируем активный лист (при этом создаётся новая книга) Err.Clear: ActiveSheet.Copy: DoEvents If Err Then Exit Sub ' произошла какая-то ошибка при попытке копирования листа
' убеждаемся, что активной книгой является копия листа If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then With ActiveWorkbook.ActiveSheet.DrawingObjects.Delete UsedRange.Value = .UsedRange.Value Parent.SaveAs Filename, xlOpenXMLWorkbook
' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If End Sub
[/vba]
KuklP спасибо за участие и подсказку, Переделал макрос, к сожалению не срабатывает.
[vba]
Код
Sub Сохранение() On Error Resume Next ' название подпапки, в которую по-умолчанию будет предложено сохранить файл Const REPORTS_FOLDER = "C:Users\Aman\Desktop\Games" ' ?создаём папку для файла, если её ещё нет MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER ' выбираем стартовую папку ChDrive Left(ThisWorkbook.Path, 1): ChDir "C:\Users\Aman\Desktop\Games"
' вывод диалогового окна для запроса имени сохраняемого файла Filename = Application.GetSaveAsFilename("PO-13-.xlsx", "Excel (*.xlsx),", , _ "Введите имя файла для сохраняемого отчёта", "Сохранить") ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл If VarType(Filename) = vbBoolean Then Exit Sub
' копируем активный лист (при этом создаётся новая книга) Err.Clear: ActiveSheet.Copy: DoEvents If Err Then Exit Sub ' произошла какая-то ошибка при попытке копирования листа
' убеждаемся, что активной книгой является копия листа If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then With ActiveWorkbook.ActiveSheet.DrawingObjects.Delete UsedRange.Value = .UsedRange.Value Parent.SaveAs Filename, xlOpenXMLWorkbook
' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If End Sub
Надо внимательно читать, что советуют. Куда подевались точки? Куда делось end with? Должно быть так: [vba]
Код
If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then With ActiveWorkbook.ActiveSheet .DrawingObjects.Delete .UsedRange.Value = .UsedRange.Value .Parent.SaveAs Filename, xlOpenXMLWorkbook End With ' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If
Надо внимательно читать, что советуют. Куда подевались точки? Куда делось end with? Должно быть так: [vba]
Код
If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then With ActiveWorkbook.ActiveSheet .DrawingObjects.Delete .UsedRange.Value = .UsedRange.Value .Parent.SaveAs Filename, xlOpenXMLWorkbook End With ' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If
KuklP, Изменил значение на диск С, но формулы и вып.списки не исчезли. Плиз может что-то еще посоветуте?
[vba]
Код
Sub Сохранение() On Error Resume Next ' название подпапки, в которую по-умолчанию будет предложено сохранить файл Const REPORTS_FOLDER = "C:Users\Aman\Desktop\Games" ' ?создаём папку для файла, если её ещё нет MkDir ThisWorkbook.Path & "C:" ' выбираем стартовую папку ChDrive Left(ThisWorkbook.Path, 1): ChDir "C:\Users\Aman\Desktop\Games"
' вывод диалогового окна для запроса имени сохраняемого файла Filename = Application.GetSaveAsFilename("PO-13-.xlsx", "Excel (*.xlsx),", , _ "Введите имя файла для сохраняемого отчёта", "Сохранить") ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл If VarType(Filename) = vbBoolean Then Exit Sub
' копируем активный лист (при этом создаётся новая книга) Err.Clear: ActiveSheet.Copy: DoEvents If Err Then Exit Sub ' произошла какая-то ошибка при попытке копирования листа
' убеждаемся, что активной книгой является копия листа If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then ActiveWorkbook.ActiveSheet.DrawingObjects.Delete ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
' теперь убираем формулы и выпадающие списки с копии листа For Each c In Selection c.FormulaR1C1 = c.Value Next c
' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If End Sub
[/vba]
KuklP, Изменил значение на диск С, но формулы и вып.списки не исчезли. Плиз может что-то еще посоветуте?
[vba]
Код
Sub Сохранение() On Error Resume Next ' название подпапки, в которую по-умолчанию будет предложено сохранить файл Const REPORTS_FOLDER = "C:Users\Aman\Desktop\Games" ' ?создаём папку для файла, если её ещё нет MkDir ThisWorkbook.Path & "C:" ' выбираем стартовую папку ChDrive Left(ThisWorkbook.Path, 1): ChDir "C:\Users\Aman\Desktop\Games"
' вывод диалогового окна для запроса имени сохраняемого файла Filename = Application.GetSaveAsFilename("PO-13-.xlsx", "Excel (*.xlsx),", , _ "Введите имя файла для сохраняемого отчёта", "Сохранить") ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл If VarType(Filename) = vbBoolean Then Exit Sub
' копируем активный лист (при этом создаётся новая книга) Err.Clear: ActiveSheet.Copy: DoEvents If Err Then Exit Sub ' произошла какая-то ошибка при попытке копирования листа
' убеждаемся, что активной книгой является копия листа If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then ActiveWorkbook.ActiveSheet.DrawingObjects.Delete ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
' теперь убираем формулы и выпадающие списки с копии листа For Each c In Selection c.FormulaR1C1 = c.Value Next c
' закрываем сохранённый файл ' (удалите следующую строку, если закрывать созданный файл не требуется) ActiveWorkbook.Close False End If End Sub
KuklP, Исправил макрос в соответствии с вашими замечаниями. Формулы уже не копируются за это вам спасибо, но к сожалению вып.списки все еще остаются в сохраняемом листе
KuklP, Исправил макрос в соответствии с вашими замечаниями. Формулы уже не копируются за это вам спасибо, но к сожалению вып.списки все еще остаются в сохраняемом листе Digital