Сохранение с разными именами по условию из 4 IF
emkub
Дата: Пятница, 17.06.2016, 12:08 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Здравствуйте! Люди добрые, подскажите, что я не учёл в этом макросе: [vba]Код
Sub ййййййййййй() 'сохранение как xlsx Set wb = ActiveWorkbook For Each s In wb.Worksheets 'проходим во всем листам активной книги s.Copy 'сохраняем лист как новый файл If Hour(Now) > 3 And Hour(Now) < 11 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_1" & ".xlsx" 'сохраняем файл If Hour(Now) > 11 And Hour(Now) < 15 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_2" & ".xlsx" If Hour(Now) > 15 And Hour(Now) < 21 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_3" & ".xlsx" If Hour(Now) > 21 And Hour(Now) < 3 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_4" & ".xlsx" Next End Sub
[/vba] Всё отрабатывает хорошо, кроме последнего условия. Никак не хочет сохранять с заданным именем, останавливается на названии "Книга1".
Здравствуйте! Люди добрые, подскажите, что я не учёл в этом макросе: [vba]Код
Sub ййййййййййй() 'сохранение как xlsx Set wb = ActiveWorkbook For Each s In wb.Worksheets 'проходим во всем листам активной книги s.Copy 'сохраняем лист как новый файл If Hour(Now) > 3 And Hour(Now) < 11 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_1" & ".xlsx" 'сохраняем файл If Hour(Now) > 11 And Hour(Now) < 15 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_2" & ".xlsx" If Hour(Now) > 15 And Hour(Now) < 21 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_3" & ".xlsx" If Hour(Now) > 21 And Hour(Now) < 3 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_4" & ".xlsx" Next End Sub
[/vba] Всё отрабатывает хорошо, кроме последнего условия. Никак не хочет сохранять с заданным именем, останавливается на названии "Книга1". emkub
Ответить
Сообщение Здравствуйте! Люди добрые, подскажите, что я не учёл в этом макросе: [vba]Код
Sub ййййййййййй() 'сохранение как xlsx Set wb = ActiveWorkbook For Each s In wb.Worksheets 'проходим во всем листам активной книги s.Copy 'сохраняем лист как новый файл If Hour(Now) > 3 And Hour(Now) < 11 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_1" & ".xlsx" 'сохраняем файл If Hour(Now) > 11 And Hour(Now) < 15 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_2" & ".xlsx" If Hour(Now) > 15 And Hour(Now) < 21 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_3" & ".xlsx" If Hour(Now) > 21 And Hour(Now) < 3 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_4" & ".xlsx" Next End Sub
[/vba] Всё отрабатывает хорошо, кроме последнего условия. Никак не хочет сохранять с заданным именем, останавливается на названии "Книга1". Автор - emkub Дата добавления - 17.06.2016 в 12:08
Roman777
Дата: Пятница, 17.06.2016, 12:40 |
Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация:
127
±
Замечаний:
0% ±
Excel 2007, Excel 2013
emkub , у Вас одновременно число не может быть больше 21 и меньше 3... поэтому рекомендую вместо And использовать Or...
emkub , у Вас одновременно число не может быть больше 21 и меньше 3... поэтому рекомендую вместо And использовать Or...Roman777
Много чего не знаю!!!!
Ответить
Сообщение emkub , у Вас одновременно число не может быть больше 21 и меньше 3... поэтому рекомендую вместо And использовать Or...Автор - Roman777 Дата добавления - 17.06.2016 в 12:40
sboy
Дата: Пятница, 17.06.2016, 12:44 |
Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
emkub , Видимо в настройках надо копать. У меня ваш макрос сохраняет файлы с именем "Лист1_1.xlsx" и т.д.
emkub , Видимо в настройках надо копать. У меня ваш макрос сохраняет файлы с именем "Лист1_1.xlsx" и т.д.sboy
Яндекс: 410016850021169
Ответить
Сообщение emkub , Видимо в настройках надо копать. У меня ваш макрос сохраняет файлы с именем "Лист1_1.xlsx" и т.д.Автор - sboy Дата добавления - 17.06.2016 в 12:44
_Boroda_
Дата: Пятница, 17.06.2016, 13:01 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16907
Репутация:
6615
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Если уж очень хочется именно такую конструкцию, то можно вот так, например: [vba]Код
n_ = "_4" If Hour(Now) > 3 And Hour(Now) < 11 Then n_ = "_1" If Hour(Now) > 11 And Hour(Now) < 15 Then n_ = "_2" If Hour(Now) > 15 And Hour(Now) < 21 Then n_ = "_3" ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & n_ & ".xlsx"
[/vba] А еще можно здесь еще посмотреть Оператор ветвления "Select Case"
Если уж очень хочется именно такую конструкцию, то можно вот так, например: [vba]Код
n_ = "_4" If Hour(Now) > 3 And Hour(Now) < 11 Then n_ = "_1" If Hour(Now) > 11 And Hour(Now) < 15 Then n_ = "_2" If Hour(Now) > 15 And Hour(Now) < 21 Then n_ = "_3" ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & n_ & ".xlsx"
[/vba] А еще можно здесь еще посмотреть Оператор ветвления "Select Case" _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Если уж очень хочется именно такую конструкцию, то можно вот так, например: [vba]Код
n_ = "_4" If Hour(Now) > 3 And Hour(Now) < 11 Then n_ = "_1" If Hour(Now) > 11 And Hour(Now) < 15 Then n_ = "_2" If Hour(Now) > 15 And Hour(Now) < 21 Then n_ = "_3" ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & n_ & ".xlsx"
[/vba] А еще можно здесь еще посмотреть Оператор ветвления "Select Case" Автор - _Boroda_ Дата добавления - 17.06.2016 в 13:01
emkub
Дата: Пятница, 17.06.2016, 15:44 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
одновременно число не может быть больше 21 и меньше 3
во я дурко :) Подправлю - отпишусь.
одновременно число не может быть больше 21 и меньше 3
во я дурко :) Подправлю - отпишусь.emkub
Ответить
Сообщение одновременно число не может быть больше 21 и меньше 3
во я дурко :) Подправлю - отпишусь.Автор - emkub Дата добавления - 17.06.2016 в 15:44
RAN
Дата: Пятница, 17.06.2016, 16:21 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Дались вам эти And Or. [vba]Код
Sub qqqq() Set wb = ActiveWorkbook For Each s In wb.Worksheets '???????? ?? ???? ?????? ???????? ????? s.Copy '????????? ???? ??? ????? ???? If Hour(Now) < 3 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_4" & ".xlsx" ElseIf Hour(Now) < 11 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_1" & ".xlsx" '????????? ???? ElseIf Hour(Now) < 15 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_2" & ".xlsx" ElseIf Hour(Now) < 21 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_3" & ".xlsx" End If Next End Sub
[/vba]
Дались вам эти And Or. [vba]Код
Sub qqqq() Set wb = ActiveWorkbook For Each s In wb.Worksheets '???????? ?? ???? ?????? ???????? ????? s.Copy '????????? ???? ??? ????? ???? If Hour(Now) < 3 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_4" & ".xlsx" ElseIf Hour(Now) < 11 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_1" & ".xlsx" '????????? ???? ElseIf Hour(Now) < 15 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_2" & ".xlsx" ElseIf Hour(Now) < 21 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_3" & ".xlsx" End If Next End Sub
[/vba] RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Дались вам эти And Or. [vba]Код
Sub qqqq() Set wb = ActiveWorkbook For Each s In wb.Worksheets '???????? ?? ???? ?????? ???????? ????? s.Copy '????????? ???? ??? ????? ???? If Hour(Now) < 3 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_4" & ".xlsx" ElseIf Hour(Now) < 11 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_1" & ".xlsx" '????????? ???? ElseIf Hour(Now) < 15 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_2" & ".xlsx" ElseIf Hour(Now) < 21 Then ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & "_3" & ".xlsx" End If Next End Sub
[/vba] Автор - RAN Дата добавления - 17.06.2016 в 16:21
sboy
Дата: Пятница, 17.06.2016, 16:31 |
Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
RAN , в промежуток 22:00-23:59 файл не сохранится по вашему макросу
RAN , в промежуток 22:00-23:59 файл не сохранится по вашему макросуsboy
Яндекс: 410016850021169
Ответить
Сообщение RAN , в промежуток 22:00-23:59 файл не сохранится по вашему макросуАвтор - sboy Дата добавления - 17.06.2016 в 16:31
RAN
Дата: Пятница, 17.06.2016, 16:54 |
Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
И правильно делает. В упор не вижу, как он должен сохраняться. Кому надо, допишет.
И правильно делает. В упор не вижу, как он должен сохраняться. Кому надо, допишет. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение И правильно делает. В упор не вижу, как он должен сохраняться. Кому надо, допишет. Автор - RAN Дата добавления - 17.06.2016 в 16:54
emkub
Дата: Пятница, 17.06.2016, 17:46 |
Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Остановился на варианте Бороды. Его макрос почему-то оказался на 5-10 секунд быстрее (ПК старый). В очередной раз ВСЕМ большое спасибо!
Остановился на варианте Бороды. Его макрос почему-то оказался на 5-10 секунд быстрее (ПК старый). В очередной раз ВСЕМ большое спасибо! emkub
Ответить
Сообщение Остановился на варианте Бороды. Его макрос почему-то оказался на 5-10 секунд быстрее (ПК старый). В очередной раз ВСЕМ большое спасибо! Автор - emkub Дата добавления - 17.06.2016 в 17:46