Уважаемые Екселисты! Если не трудно, помогите!!! Необходимо скрыть листы, кроме Список, Сальдо и Перечень, с возможностью сохранять их без формул. В списке с помощью галочки я сохраняю листы без формул. А скрытые листы без формул сохранить не могу!!! Благодарю заранее
Уважаемые Екселисты! Если не трудно, помогите!!! Необходимо скрыть листы, кроме Список, Сальдо и Перечень, с возможностью сохранять их без формул. В списке с помощью галочки я сохраняю листы без формул. А скрытые листы без формул сохранить не могу!!! Благодарю заранееekut
Sub SaveList() Dim Wsh As Worksheet, shSpis As Worksheet Dim iPath As String Dim cell As Range, cellls As Range Set shSpis = ThisWorkbook.Worksheets("Список") With Application .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlCalculationManual End With iPath = ThisWorkbook.Path & "\Списание ТМЦ уч.св.№5\" ' 'проверяем есть ли такая папка, если нет, то создаем If Dir(iPath, vbDirectory) = "" Then MkDir iPath rrow = shSpis.Cells(Rows.Count, 1).End(xlUp).Row '===================================================================================================== i = 0 ' флаг скрыт или нет лист '===================================================================================================== For t = 2 To rrow For Each Wsh In Worksheets 'цикл по листам, кроме Список If Wsh.Name <> "Список" Then If shSpis.Range("A" & t) = "a" And shSpis.Range("b" & t) = Wsh.Name Then '===================================================================================================== If Wsh.Visible = False Then i = 1: Wsh.Visible = True ' проверка скрыт лист или нет, если скрат, по показать '===================================================================================================== Wsh.Copy 'копируем очередной лист ActiveSheet.UsedRange.Copy ActiveSheet.UsedRange.PasteSpecial xlValues ActiveWorkbook.Close SaveChanges:=True '===================================================================================================== If i = 1 Then i = 0: Wsh.Visible = False ' проверка если лист был скрыт то скрывает его '===================================================================================================== End If End If Next Next With Application .Calculation = xlCalculationAutomatic .DisplayAlerts = True .ScreenUpdating = True End With End Sub
[/vba]
Попробуйте так [vba]
Код
Sub SaveList() Dim Wsh As Worksheet, shSpis As Worksheet Dim iPath As String Dim cell As Range, cellls As Range Set shSpis = ThisWorkbook.Worksheets("Список") With Application .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlCalculationManual End With iPath = ThisWorkbook.Path & "\Списание ТМЦ уч.св.№5\" ' 'проверяем есть ли такая папка, если нет, то создаем If Dir(iPath, vbDirectory) = "" Then MkDir iPath rrow = shSpis.Cells(Rows.Count, 1).End(xlUp).Row '===================================================================================================== i = 0 ' флаг скрыт или нет лист '===================================================================================================== For t = 2 To rrow For Each Wsh In Worksheets 'цикл по листам, кроме Список If Wsh.Name <> "Список" Then If shSpis.Range("A" & t) = "a" And shSpis.Range("b" & t) = Wsh.Name Then '===================================================================================================== If Wsh.Visible = False Then i = 1: Wsh.Visible = True ' проверка скрыт лист или нет, если скрат, по показать '===================================================================================================== Wsh.Copy 'копируем очередной лист ActiveSheet.UsedRange.Copy ActiveSheet.UsedRange.PasteSpecial xlValues ActiveWorkbook.Close SaveChanges:=True '===================================================================================================== If i = 1 Then i = 0: Wsh.Visible = False ' проверка если лист был скрыт то скрывает его '===================================================================================================== End If End If Next Next With Application .Calculation = xlCalculationAutomatic .DisplayAlerts = True .ScreenUpdating = True End With End Sub
Спасибо за быстрый ответ! Только проблема в том, что изначально сохраненные листы без формул сохранялись в указанную папку в макросе автоматически и с названием листа! А сейчас Книгой 1 и 2.
Спасибо за быстрый ответ! Только проблема в том, что изначально сохраненные листы без формул сохранялись в указанную папку в макросе автоматически и с названием листа! А сейчас Книгой 1 и 2.ekut
Sub SaveList() Dim Wsh As Worksheet, shSpis As Worksheet Dim iPath As String Dim cell As Range, cellls As Range Set shSpis = ThisWorkbook.Worksheets("Список") With Application .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlCalculationManual End With iPath = ThisWorkbook.Path & "\Списание ТМЦ уч.св.№5\" ' 'проверяем есть ли такая папка, если нет, то создаем If Dir(iPath, vbDirectory) = "" Then MkDir iPath rrow = shSpis.Cells(Rows.Count, 1).End(xlUp).Row '===================================================================================================== i = 0 ' флаг скрыт или нет лист '===================================================================================================== For t = 2 To rrow For Each Wsh In Worksheets 'цикл по листам, кроме Список If Wsh.Name <> "Список" Then If shSpis.Range("A" & t) = "a" And shSpis.Range("b" & t) = Wsh.Name Then '===================================================================================================== If Wsh.Visible = False Then i = 1: Wsh.Visible = True ' проверка скрыт лист или нет, если скрат, по показать '===================================================================================================== Wsh.Copy 'копируем очередной лист ActiveSheet.UsedRange.Copy ActiveSheet.UsedRange.PasteSpecial xlValues ActiveWorkbook.SaveAs iPath & Wsh.Name & ".xlsx" 'в подпапку СИЗ уч.св.№5 ActiveWorkbook.Close SaveChanges:=True '===================================================================================================== If i = 1 Then i = 0: Wsh.Visible = False ' проверка если лист был скрыт то скрывает его '===================================================================================================== End If End If Next Next With Application .Calculation = xlCalculationAutomatic .DisplayAlerts = True .ScreenUpdating = True End With End Sub
[/vba]
Прошу прощения, это я удалил лишнюю строку [vba]
Код
Sub SaveList() Dim Wsh As Worksheet, shSpis As Worksheet Dim iPath As String Dim cell As Range, cellls As Range Set shSpis = ThisWorkbook.Worksheets("Список") With Application .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlCalculationManual End With iPath = ThisWorkbook.Path & "\Списание ТМЦ уч.св.№5\" ' 'проверяем есть ли такая папка, если нет, то создаем If Dir(iPath, vbDirectory) = "" Then MkDir iPath rrow = shSpis.Cells(Rows.Count, 1).End(xlUp).Row '===================================================================================================== i = 0 ' флаг скрыт или нет лист '===================================================================================================== For t = 2 To rrow For Each Wsh In Worksheets 'цикл по листам, кроме Список If Wsh.Name <> "Список" Then If shSpis.Range("A" & t) = "a" And shSpis.Range("b" & t) = Wsh.Name Then '===================================================================================================== If Wsh.Visible = False Then i = 1: Wsh.Visible = True ' проверка скрыт лист или нет, если скрат, по показать '===================================================================================================== Wsh.Copy 'копируем очередной лист ActiveSheet.UsedRange.Copy ActiveSheet.UsedRange.PasteSpecial xlValues ActiveWorkbook.SaveAs iPath & Wsh.Name & ".xlsx" 'в подпапку СИЗ уч.св.№5 ActiveWorkbook.Close SaveChanges:=True '===================================================================================================== If i = 1 Then i = 0: Wsh.Visible = False ' проверка если лист был скрыт то скрывает его '===================================================================================================== End If End If Next Next With Application .Calculation = xlCalculationAutomatic .DisplayAlerts = True .ScreenUpdating = True End With End Sub