Страницы: 1
RSS
удаление листов в эксель
 
Здравствуйте, подскажите как реализовать следующую задачу, есть книга эксель, в ней множество страниц, на главной странице идет заполнение, и данные расходятся по листам, но бывает что не по всем, а только по тем, которые необходимы, далее каждый лист преобразуется в лист пдф и идет на печать, задача состоит в том что бы удалить те листы,  которые не заполнились данными, изначально планировалось что бы сразу формировались нужные листы в формате пдф, но решение так и не было найдено, заранее спасибо
 
Из такого описания ответ очевиден: выделить лишние листы и удалить. А чтобы получить хоть что-то похожее на решение нужно приложить файл и рассказать, по какому признаку лист можно считать лишним.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ну вопрос вроде сформулирован четко, в общем вот файлик, на вкладке результаты идет выбор нужного показателя, в столбце D пишется необходимый результат, далее все разносится по листам, с помощью функции впр, для каждого элемента выпадающего списка есть свой лист, в данный момент листы  удалены, оставил пару для примера, идея в том что бы на листы где стоит #НД удалялись, за исключением самого листа результаты, так как количество исследований может быть и разное,  постоянно протягивать вниз формулу не интересно. листов порядка 500, и смыл их все выкладывать сюда я не вижу
 
В SplitSheets5() перед экспортом в pdf вставить

Код
Application.DisplayAlerts = False
If (s.Cells(33, 16).Text = "#Н/Д") And (s.Index > 2) Then s.Delete
Application.DisplayAlerts = True


ps при условии что листы идентичны
Изменено: bigorq - 29.11.2019 12:09:57
 
я извиняюсь, а куда именно вставить, если не трудно можно код целиком)))
 
Вот Ваша процедура с изменением

Код
Sub SplitSheets5()
    Dim s As Worksheet
 
    For Each s In ActiveWorkbook.Worksheets
        Application.DisplayAlerts = False
        If (s.Cells(33, 16).Text = "#Н/Д") And (s.Index > 2) Then s.Delete
        Application.DisplayAlerts = True
        
        Rem s.ExportAsFixedFormat Filename:=ThisWorkbook.Path & "\" & s.Name & ".pdf", Type:=xlTypePDF
    Next
End Sub
 
в маленьком файле она работает, а вот в полном почему то не хочет...ладно буду разбираться, спасибо огромное!!!!!
 
Цитата
bigorq написал:
Вот Ваша процедура с изменением
спасибо огромное, но вот не пойму почему с исходным файлом она не хочет работать, с мелким отрабатывает без проблем...ладно разберусь, хотя может подскажете в чем дело...не может это зависеть от разного места положения результатов? просто на разных листах они на в разных ячейках
 
denka1982,
проблема маленьких примеров :)
Я про двум листам примера сделал вывод что результат всегда в P33, на этом все и основано проверяется p33, если там Н/Д лист удаляется

Как вариант через или перечислить все ячейки где может быть результат
 
Безумное цитирование - оно и на форуме Excel бездумное [МОДЕРАТОР]

и еще одна проблемка возникла, один раз он отработал, а больше не хочет, может быть данные в кеше где то застряли, первый раз отработал на ура, второй раз запустил, без сохранения, листы удаляет, а вот пдф делать не хочет уже никак
 
Наверное, правильнее будет так:
Код
Sub SplitSheets5()
     Dim s As Worksheet
     Application.DisplayAlerts = False
     For Each s In ActiveWorkbook.Worksheets
       If s.Index > 2 Then
         If s.Cells(33, 16).Value = CVErr(xlErrna) Then
            s.Delete
        else
            s.ExportAsFixedFormat Filename:=ThisWorkbook.Path & "\" &  s.Name & ".pdf", Type:=xlTypePDF
        end if
      end if
    Next
    Application.DisplayAlerts = True
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
denka1982 написал:
удаление листов в эксель
Цитата
denka1982 написал:
пдф делать не хочет
У Вас два совершенно разных вопроса в одной теме.
 
Дмитрий(The_Prist) Щербаков, макрос вообще не работает, пишет рун тайм эрор 13, и все таки идея заключается в том что б удалял именно ячейки со значением НД, а не все подряд, предыдущий код работал, но разово
 
Я тупанул :) Заремил вывод в pdf на время тестирования.
Уберите REM перед строчкой экспорта в pdf
И т.к. про экспорт я не думал, то мой вариант не верен, спасибо Дмитрий(The_Prist) Щербаков, что поправил
 
ура победа!!!а,на счет того что б ссылка была на ячейку, это уже проще просто сделать, или в коде прописать ячейки, или их все воткнуть в одно место, еще раз огромное спасибо!!!!
 
Цитата
denka1982 написал:
задача состоит в том что бы удалить те листы
Цитата
denka1982 написал:
все таки идея заключается в том что б удалял именно ячейки со значением НД
тут уже определяться надо - листы или ячейки. Если ячейки с НД - это действительно проще, но непонятно, надо ли в этом случае выводить лист на печать или пропускать такой лист.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
И давайте уж отделять мух от котлет. Сохранение в pdf не имеет никакого отношения к удалению листов
 
Цитата
vikttur написал:
И давайте уж отделять мух от котлет. Сохранение в pdf не имеет никакого отношения к удалению листов
так тут надо что б в пдф попадали только определенные листы, а не все подряд, идея в том что бы сперва удалить лишние, и затем сформировать пдф, в приницпе можно и двумя макросами
 
Это Ваша задача, в которой два разных, не связанных между собой вопроса.
Вы зарабатываете деньги зачем? Только чтобы пойти хлеба купить? Так и здесь. Листы требуется удалять при разных условиях, в разных задачах. Как и сохранение в pdf - кому-то потребуется сохранять без удалеия листов или с изменением данных...

Комплексно - пожалуйста, раздел платных заказов открыт.
 
Цитата
vikttur написал:
Это Ваша задача, в которой два разных, не связанных между собой вопроса. Вы зарабатываете деньги зачем? Только чтобы пойти хлеба купить? Так и здесь. Листы требуется удалять при разных условиях, в разных задачах. Как и сохранение в pdf - кому-то потребуется сохранять без удалеия листов или с изменением данных..
требуется именно удалять листы, что б затем формировать ПДФ, так как на удаленных не будет никакой информации
 
Вы не понимаете?!
Две РАЗНЫХ задачи. Две РАЗНЫХ темы. Одна - об удалении листов, другая - о создании файла. Потом ДВА  решения сами объединяете в своей ОДНОЙ задаче.
Кому-то нужно будет создавать pdf - будет он искать решение своей проблемы в теме об удалении листов? Иллюстрация на предыдущем примере: Вы получили деньги, но не знаете, что их можно тратить не только на хлеб...

Как еще объяснить?

И не жмите бездумно кнопку цитирования.
 
Витя, здесь я бы не согласился, т.к. задача просто разбивается на две подзадачи и по сути даже на одну: правильное удаление листов. Сохранение в PDF было изначально. Т.е. сохранить в PDF только листы, отвечающие критериям, а остальные удалить. А вот зачем две темы было создавать с одной и той же задачей - вот здесь я уже не понимаю.
Код из второй темы готов выложить здесь после того, как автор определиться и здесь уже напишет что вообще все-таки надо в итоге: удалять листы с НД или удалять ячейки или еще чего там надо делать.
Изменено: Дмитрий(The_Prist) Щербаков - 06.12.2019 12:18:43
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
denka1982 написал:
изначально планировалось что бы сразу формировались нужные листы в формате пдф, но решение так и не было найдено,
наверно плохо искали.
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
сохранить в PDF только листы, отвечающие критериям, а остальные удалить
дим, вот с таким названием было бы всё правильно. А с текущим...
Страницы: 1
Наверх