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

Вход

Регистрация

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

 

= Мир MS Excel/Автозапуск книги по наступлению даты - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автозапуск книги по наступлению даты (Макросы/Sub)
Автозапуск книги по наступлению даты
DAKRAY Дата: Среда, 30.12.2015, 12:16 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Всем доброго времени суток, уважаемые форумчане!
При открытии файла идет проверка - если сегодня первое число месяца, то значение ячейки А1 вписывается соответсвенно в ячейку C2, D2, E2 итд.

Проблема: человеческий фактор - забыл открыть файл первого числа и упустил значение ячейки на тот момент.

Дело в том, что в оригинальном файле у меня список с жильцами дома, их оплатами, бланком счета. Если человек не заплатил по счету до 20-го числа, начинают тикать проценты. 2-го числа они будут отличатся от 1-го, а может человек надумает оплатить счет в этот день, т.е. что будет второго числа и после - не угадаешь, а мне выписывая счет нужно вносить задолжность посчитаную на первое число.

Миссия невыполнима: Можно ли сделать так, чтобы когда наступает 1-ое число каждого месяца, книга сама открывалась и делала запись? Ну или чтобы она хотя бы открывалась каждый день и делала проверку, которая в файле-примере? Или мне нужно ставить будильник на каждое первое число месяца и открывать файл самому? Уже не знаю какими еще кодовыми словами можно запросить поисковик найти - можно ли вообще это сделать. Вы уж простите, везде обыскался.

Максимально упрощенный файл-пример в приложении.
К сообщению приложен файл: test.chck.date.xls(21Kb)


Сообщение отредактировал DAKRAY - Среда, 30.12.2015, 12:19
 
Ответить
СообщениеВсем доброго времени суток, уважаемые форумчане!
При открытии файла идет проверка - если сегодня первое число месяца, то значение ячейки А1 вписывается соответсвенно в ячейку C2, D2, E2 итд.

Проблема: человеческий фактор - забыл открыть файл первого числа и упустил значение ячейки на тот момент.

Дело в том, что в оригинальном файле у меня список с жильцами дома, их оплатами, бланком счета. Если человек не заплатил по счету до 20-го числа, начинают тикать проценты. 2-го числа они будут отличатся от 1-го, а может человек надумает оплатить счет в этот день, т.е. что будет второго числа и после - не угадаешь, а мне выписывая счет нужно вносить задолжность посчитаную на первое число.

Миссия невыполнима: Можно ли сделать так, чтобы когда наступает 1-ое число каждого месяца, книга сама открывалась и делала запись? Ну или чтобы она хотя бы открывалась каждый день и делала проверку, которая в файле-примере? Или мне нужно ставить будильник на каждое первое число месяца и открывать файл самому? Уже не знаю какими еще кодовыми словами можно запросить поисковик найти - можно ли вообще это сделать. Вы уж простите, везде обыскался.

Максимально упрощенный файл-пример в приложении.

Автор - DAKRAY
Дата добавления - 30.12.2015 в 12:16
SLAVICK Дата: Среда, 30.12.2015, 12:31 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2007
Репутация: 674 ±
Замечаний: 0% ±

2007,2010,2013,2016
Пишите макрос проверку в персональную книгу макросов на открытие книги.
Каждый раз при запуске excel будет выполнятся проверка. Если совпадает - открыть книгу.
а мне выписывая счет нужно вносить задолжность посчитаную на первое число.

Так может расчет оптимизировать, чтобы считал с учетом 1-го дня?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеПишите макрос проверку в персональную книгу макросов на открытие книги.
Каждый раз при запуске excel будет выполнятся проверка. Если совпадает - открыть книгу.
а мне выписывая счет нужно вносить задолжность посчитаную на первое число.

Так может расчет оптимизировать, чтобы считал с учетом 1-го дня?

Автор - SLAVICK
Дата добавления - 30.12.2015 в 12:31
DAKRAY Дата: Среда, 30.12.2015, 12:52 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
SLAVICK, смысл писать проверку? Если уж открываю эксель то и книгу могу открыть, а там уже "Workbook_Open()" сработает.
К сожалению правила такие, менять по датам ничего не могу. Проблема в том, что жильцы очень хаотично платят, и чаще всего не одним платежом, а по несколько раз в месяц, поэтому мне нужно как-то фиксировать суммы в конкретный день, ничего другого на ум не приходит, голову уже сломал.


Сообщение отредактировал DAKRAY - Среда, 30.12.2015, 12:53
 
Ответить
СообщениеSLAVICK, смысл писать проверку? Если уж открываю эксель то и книгу могу открыть, а там уже "Workbook_Open()" сработает.
К сожалению правила такие, менять по датам ничего не могу. Проблема в том, что жильцы очень хаотично платят, и чаще всего не одним платежом, а по несколько раз в месяц, поэтому мне нужно как-то фиксировать суммы в конкретный день, ничего другого на ум не приходит, голову уже сломал.

Автор - DAKRAY
Дата добавления - 30.12.2015 в 12:52
Manyasha Дата: Среда, 30.12.2015, 13:01 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 1997
Репутация: 829 ±
Замечаний: 0% ±

Excel 2010, 2016
DAKRAY, Можно выпендриться и написать внешний скрипт :D
Сохраните с расширением vbs и поместите в папку автозагрузки на компе (или задачу повесить на вход в систему, например)
[vba]
Код
Option Explicit

Dim objExcel
Dim objWorkbook
Set objExcel = WScript.CreateObject("Excel.Application")
If Day(Now) = 1 Then
    Set objWorkbook = objExcel.Workbooks.Open("C:\test.chck.date.xls")
    objExcel.Visible = True: objExcel.UserControl = True
End If
Set objExcel = Nothing: Set objWorkbook = Nothing
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеDAKRAY, Можно выпендриться и написать внешний скрипт :D
Сохраните с расширением vbs и поместите в папку автозагрузки на компе (или задачу повесить на вход в систему, например)
[vba]
Код
Option Explicit

Dim objExcel
Dim objWorkbook
Set objExcel = WScript.CreateObject("Excel.Application")
If Day(Now) = 1 Then
    Set objWorkbook = objExcel.Workbooks.Open("C:\test.chck.date.xls")
    objExcel.Visible = True: objExcel.UserControl = True
End If
Set objExcel = Nothing: Set objWorkbook = Nothing
[/vba]

Автор - Manyasha
Дата добавления - 30.12.2015 в 13:01
SLAVICK Дата: Среда, 30.12.2015, 13:14 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2007
Репутация: 674 ±
Замечаний: 0% ±

2007,2010,2013,2016
SLAVICK, смысл писать проверку?

Вы же каждый день на работе открываете Excel?
Если да - то это вариант, если нет - то тогда вариант Manyasha.
Проблема в том, что жильцы очень хаотично платят, и чаще всего не одним платежом, а по несколько раз в месяц,

Это не существенно, если все данные сохраняются в базе. Все можно просчитать. Если же Вы не ведете базу - тогда конечно не выйдет.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
SLAVICK, смысл писать проверку?

Вы же каждый день на работе открываете Excel?
Если да - то это вариант, если нет - то тогда вариант Manyasha.
Проблема в том, что жильцы очень хаотично платят, и чаще всего не одним платежом, а по несколько раз в месяц,

Это не существенно, если все данные сохраняются в базе. Все можно просчитать. Если же Вы не ведете базу - тогда конечно не выйдет.

Автор - SLAVICK
Дата добавления - 30.12.2015 в 13:14
DAKRAY Дата: Среда, 30.12.2015, 13:35 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Manyasha, очень интересный подход. Попробовал сохранил, сам файл работает, если его в ручную запустить, а вот из папки автозагрузки после рестарта почему-то не сработало. Тут теперь другой нюанс - компьютер может и не выключаться по несколько дней, и тогда ничего не получится. Может можно как-то к календарю привязать запуск файла, повесить на все первые числа, что-то тип как напоминание на телефоне? В стандартном ОС календаре вроде никаких заметок делать нельзя, может есть какие-то программы? Нужно поискать..

SLAVICK, к сожалению каждый день не открываю. У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу. Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.
 
Ответить
СообщениеManyasha, очень интересный подход. Попробовал сохранил, сам файл работает, если его в ручную запустить, а вот из папки автозагрузки после рестарта почему-то не сработало. Тут теперь другой нюанс - компьютер может и не выключаться по несколько дней, и тогда ничего не получится. Может можно как-то к календарю привязать запуск файла, повесить на все первые числа, что-то тип как напоминание на телефоне? В стандартном ОС календаре вроде никаких заметок делать нельзя, может есть какие-то программы? Нужно поискать..

SLAVICK, к сожалению каждый день не открываю. У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу. Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.

Автор - DAKRAY
Дата добавления - 30.12.2015 в 13:35
Michael_S Дата: Среда, 30.12.2015, 13:50 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1831
Репутация: 343 ±
Замечаний: 0% ±

Excel2016
При открытии книги проверяем, заполнено ли первое число текущего месяца. Если нет - ставим значение из А1
[vba]
Код
Private Sub Workbook_Open()
Dim C&
On Error Resume Next
With Worksheets(1)
    C = WorksheetFunction.Match(CDbl(Date), Range("1:1"))
    If Cells(2, C) = 0 Then Cells(2, C) = [a1]
End With
End Sub
[/vba]
теперь другой нюанс - компьютер может и не выключаться по несколько дней,

Проверку можно производить не только по открытию книги, но и по активации листа, пересчете или просто по измененю


ЯД: 41001136675053
WM: R389613894253
 
Ответить
СообщениеПри открытии книги проверяем, заполнено ли первое число текущего месяца. Если нет - ставим значение из А1
[vba]
Код
Private Sub Workbook_Open()
Dim C&
On Error Resume Next
With Worksheets(1)
    C = WorksheetFunction.Match(CDbl(Date), Range("1:1"))
    If Cells(2, C) = 0 Then Cells(2, C) = [a1]
End With
End Sub
[/vba]
теперь другой нюанс - компьютер может и не выключаться по несколько дней,

Проверку можно производить не только по открытию книги, но и по активации листа, пересчете или просто по измененю

Автор - Michael_S
Дата добавления - 30.12.2015 в 13:50
SLAVICK Дата: Среда, 30.12.2015, 14:09 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2007
Репутация: 674 ±
Замечаний: 0% ±

2007,2010,2013,2016
Может можно как-то к календарю привязать запуск файла, повесить на все первые числа, что-то тип как

Панель управления -- Администрирование -- Планировщик заданий.
Есть и программы в интернете.

У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу

А вот это не очень хорошо. На работу макроса не скажется, но я бы делал базу данных и туда записывал бы все приходы:
Дата тип сумма ....
Потом и считать легче и историю посмотреть можно, и аналитические отчеты разные сделать. ;)

Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.

Для сводной таблицы - совсем немного. Сколько у Вас примерно квартир?
Умножьте на 12 месяцев и к примеру на 3 платеже.
Получите необходимое количество строк на год :D


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 30.12.2015, 14:14
 
Ответить
Сообщение
Может можно как-то к календарю привязать запуск файла, повесить на все первые числа, что-то тип как

Панель управления -- Администрирование -- Планировщик заданий.
Есть и программы в интернете.

У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу

А вот это не очень хорошо. На работу макроса не скажется, но я бы делал базу данных и туда записывал бы все приходы:
Дата тип сумма ....
Потом и считать легче и историю посмотреть можно, и аналитические отчеты разные сделать. ;)

Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.

Для сводной таблицы - совсем немного. Сколько у Вас примерно квартир?
Умножьте на 12 месяцев и к примеру на 3 платеже.
Получите необходимое количество строк на год :D

Автор - SLAVICK
Дата добавления - 30.12.2015 в 14:09
DAKRAY Дата: Среда, 30.12.2015, 14:25 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
SLAVICK, для отчетов у меня есть две ячейки (сумма платежей до 20-го числа (где проценты еще не тикают) и после), в которые он просто плюсует каждый новый платеж.
Нашел в интернете программу и повесил на нее Manyash'ин скрипт. Всем большое спасибо за оперативность!!!
 
Ответить
СообщениеSLAVICK, для отчетов у меня есть две ячейки (сумма платежей до 20-го числа (где проценты еще не тикают) и после), в которые он просто плюсует каждый новый платеж.
Нашел в интернете программу и повесил на нее Manyash'ин скрипт. Всем большое спасибо за оперативность!!!

Автор - DAKRAY
Дата добавления - 30.12.2015 в 14:25
emkub Дата: Вторник, 07.03.2017, 17:05 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Может кому ещё понадобится решение подобной задачи.
Средствами Эксель создавать планировщик не всегда удобно. Есть очень удобная программа-планировщик nnCron.
 
Ответить
СообщениеМожет кому ещё понадобится решение подобной задачи.
Средствами Эксель создавать планировщик не всегда удобно. Есть очень удобная программа-планировщик nnCron.

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

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