Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сохранение с разными именами по условию из 4 IF - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение с разными именами по условию из 4 IF (Макросы/Sub)
Сохранение с разными именами по условию из 4 IF
emkub Дата: Пятница, 17.06.2016, 12:08 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 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
Дата добавления - 17.06.2016 в 12:08
Roman777 Дата: Пятница, 17.06.2016, 12:40 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 703
Репутация: 75 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
emkub, у Вас одновременно число не может быть больше 21 и меньше 3... поэтому рекомендую вместо And использовать Or...


Много чего не знаю!!!!
 
Ответить
Сообщениеemkub, у Вас одновременно число не может быть больше 21 и меньше 3... поэтому рекомендую вместо And использовать Or...

Автор - Roman777
Дата добавления - 17.06.2016 в 12:40
sboy Дата: Пятница, 17.06.2016, 12:44 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 48 ±
Замечаний: 0% ±

Excel 2007
emkub, Видимо в настройках надо копать. У меня ваш макрос сохраняет файлы с именем "Лист1_1.xlsx" и т.д.
 
Ответить
Сообщениеemkub, Видимо в настройках надо копать. У меня ваш макрос сохраняет файлы с именем "Лист1_1.xlsx" и т.д.

Автор - sboy
Дата добавления - 17.06.2016 в 12:44
_Boroda_ Дата: Пятница, 17.06.2016, 13:01 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 9348
Репутация: 3923 ±
Замечаний: 0% ±

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"


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
одновременно число не может быть больше 21 и меньше 3

во я дурко :)
Подправлю - отпишусь.
 
Ответить
Сообщение
одновременно число не может быть больше 21 и меньше 3

во я дурко :)
Подправлю - отпишусь.

Автор - emkub
Дата добавления - 17.06.2016 в 15:44
RAN Дата: Пятница, 17.06.2016, 16:21 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Дались вам эти 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
Дата добавления - 17.06.2016 в 16:21
sboy Дата: Пятница, 17.06.2016, 16:31 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 48 ±
Замечаний: 0% ±

Excel 2007
RAN, в промежуток 22:00-23:59 файл не сохранится по вашему макросу
 
Ответить
СообщениеRAN, в промежуток 22:00-23:59 файл не сохранится по вашему макросу

Автор - sboy
Дата добавления - 17.06.2016 в 16:31
RAN Дата: Пятница, 17.06.2016, 16:54 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
И правильно делает.
В упор не вижу, как он должен сохраняться.
Кому надо, допишет.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИ правильно делает.
В упор не вижу, как он должен сохраняться.
Кому надо, допишет.

Автор - RAN
Дата добавления - 17.06.2016 в 16:54
emkub Дата: Пятница, 17.06.2016, 17:46 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Остановился на варианте Бороды. Его макрос почему-то оказался на 5-10 секунд быстрее (ПК старый).
В очередной раз ВСЕМ большое спасибо!
 
Ответить
СообщениеОстановился на варианте Бороды. Его макрос почему-то оказался на 5-10 секунд быстрее (ПК старый).
В очередной раз ВСЕМ большое спасибо!

Автор - emkub
Дата добавления - 17.06.2016 в 17:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение с разными именами по условию из 4 IF (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!