Страницы: 1
RSS
Макрос-сохранение скрытого листа в отдельную книгу
 
Добрый вечер.
Прошу помощи, т.к. мой мозг уже не способен адекватно решить проблему. Есть множество схожих тем, однако не смог найти ту что могла бы помочь.
Суть макроса в том, что бы при нажатии на кнопку, скрытый лист (в котором формируется информация) сохранялся бы в отдельную книгу.

При этом , открыть лист для того что бы макрос сработал, получается успешно, а вот закрыть его обратно уже нет. В задумке, таких листов должно быть много, по этому не хотелось бы что бы они выскакивали на панели в первоначальном файле.
Возможно я куда-то ни туда вставляю строку Sheets("Форма заказа для клиента").Visible = 2 ?

Файл прилагается
Код
Sub Печать_Кнопка1_Щелчок()
On Error Resume Next
Sheets("Форма заказа для клиента").Visible = 1
    Const REPORTS_FOLDER = "Заказы\Для клиентов"
       MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
    ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
    Filename = Application.GetSaveAsFilename("Расчет для клиента Заказ № .xls", "Книга Excel(*.xls),", , _
                                             "Введите имя файла для сохраняемого отчёта", "Сохранить")
    If VarType(Filename) = vbBoolean Then Exit Sub
    Err.Clear: Worksheets("Форма заказа для клиента").Copy: DoEvents
    If Err Then Exit Sub
     If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then
          ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
         Application.DisplayAlerts = False
Sheets("Форма заказа для клиента").Visible = 2
End If
End Sub
 
Цитата
KIR.KRITSKIY написал:
Const REPORTS_FOLDER = "Заказы\Для клиентов"
MkDir ThisWorkbook.Path & "" & REPORTS_FOLDЕR
Учтите, что MkDir не умеет создавать дерево каталогов. Если в папке с книгой нет папки Заказы, эта команда вызовет ошибку.
2. Вы получаете имя для сохранения с расширением .xls, а сохраняете в формате xlOpenXMLWorkbook, т.е. .xlsx. Само по себе это действие не может вызвать ошибку, но потом при открытии файла Excel будет ругаться на несоответствие формата файла.
3. 15 строка Sheets("Форма заказа для клиента").Visible = 2
Вы пытаетесь скрыть лист новой книги, но он единственный, поэтому скрыть его нельзя. Сначала закройте новую книгу activeworkbook.close 0

Закомментируйте On Error Resume Next, чтобы понять, где происходит ошибка.
Изменено: Казанский - 18.12.2018 12:50:06
 
Спасибо за быстрый ответ! Действительно не обратил внимание на формат. С закрытием книги обошел по другому, обратившись на прямую к книге, в которой нужно скрыть страницу, при этом не закрывая новую, т.к. она нужна для проверки данных менеджером. Оставлю код , вдруг пригодится кому.
Код
Sub Печать_Кнопка1_Щелчок()
On Error Resume Next
Sheets("Форма заказа для клиента").Visible = 1
    Const REPORTS_FOLDER = "Заказы\Для клиентов"
       MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
    ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
    Filename = Application.GetSaveAsFilename("Расчет для клиента Заказ № .xlsx", "Книга Excel(*.xlsx),", , _
                                             "Введите имя файла для сохраняемого отчёта", "Сохранить")
    If VarType(Filename) = vbBoolean Then Exit Sub
    Err.Clear: Worksheets("Форма заказа для клиента").Copy: DoEvents
    If Err Then Exit Sub
     If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then
          ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
         Application.DisplayAlerts = False
         Workbooks("Тест").Sheets("Форма заказа для клиента").Visible = 2

End If
End Sub
Страницы: 1
Наверх