Всем доброго времени суток, уважаемые форумчане! При открытии файла идет проверка - если сегодня первое число месяца, то значение ячейки А1 вписывается соответсвенно в ячейку C2, D2, E2 итд.
Проблема: человеческий фактор - забыл открыть файл первого числа и упустил значение ячейки на тот момент.
Дело в том, что в оригинальном файле у меня список с жильцами дома, их оплатами, бланком счета. Если человек не заплатил по счету до 20-го числа, начинают тикать проценты. 2-го числа они будут отличатся от 1-го, а может человек надумает оплатить счет в этот день, т.е. что будет второго числа и после - не угадаешь, а мне выписывая счет нужно вносить задолжность посчитаную на первое число.
Миссия невыполнима: Можно ли сделать так, чтобы когда наступает 1-ое число каждого месяца, книга сама открывалась и делала запись? Ну или чтобы она хотя бы открывалась каждый день и делала проверку, которая в файле-примере? Или мне нужно ставить будильник на каждое первое число месяца и открывать файл самому? Уже не знаю какими еще кодовыми словами можно запросить поисковик найти - можно ли вообще это сделать. Вы уж простите, везде обыскался.
Максимально упрощенный файл-пример в приложении.
Всем доброго времени суток, уважаемые форумчане! При открытии файла идет проверка - если сегодня первое число месяца, то значение ячейки А1 вписывается соответсвенно в ячейку C2, D2, E2 итд.
Проблема: человеческий фактор - забыл открыть файл первого числа и упустил значение ячейки на тот момент.
Дело в том, что в оригинальном файле у меня список с жильцами дома, их оплатами, бланком счета. Если человек не заплатил по счету до 20-го числа, начинают тикать проценты. 2-го числа они будут отличатся от 1-го, а может человек надумает оплатить счет в этот день, т.е. что будет второго числа и после - не угадаешь, а мне выписывая счет нужно вносить задолжность посчитаную на первое число.
Миссия невыполнима: Можно ли сделать так, чтобы когда наступает 1-ое число каждого месяца, книга сама открывалась и делала запись? Ну или чтобы она хотя бы открывалась каждый день и делала проверку, которая в файле-примере? Или мне нужно ставить будильник на каждое первое число месяца и открывать файл самому? Уже не знаю какими еще кодовыми словами можно запросить поисковик найти - можно ли вообще это сделать. Вы уж простите, везде обыскался.
Максимально упрощенный файл-пример в приложении.DAKRAY
Пишите макрос проверку в персональную книгу макросов на открытие книги. Каждый раз при запуске excel будет выполнятся проверка. Если совпадает - открыть книгу.
а мне выписывая счет нужно вносить задолжность посчитаную на первое число.
Так может расчет оптимизировать, чтобы считал с учетом 1-го дня?
Пишите макрос проверку в персональную книгу макросов на открытие книги. Каждый раз при запуске excel будет выполнятся проверка. Если совпадает - открыть книгу.
SLAVICK, смысл писать проверку? Если уж открываю эксель то и книгу могу открыть, а там уже "Workbook_Open()" сработает. К сожалению правила такие, менять по датам ничего не могу. Проблема в том, что жильцы очень хаотично платят, и чаще всего не одним платежом, а по несколько раз в месяц, поэтому мне нужно как-то фиксировать суммы в конкретный день, ничего другого на ум не приходит, голову уже сломал.
SLAVICK, смысл писать проверку? Если уж открываю эксель то и книгу могу открыть, а там уже "Workbook_Open()" сработает. К сожалению правила такие, менять по датам ничего не могу. Проблема в том, что жильцы очень хаотично платят, и чаще всего не одним платежом, а по несколько раз в месяц, поэтому мне нужно как-то фиксировать суммы в конкретный день, ничего другого на ум не приходит, голову уже сломал.DAKRAY
Сообщение отредактировал DAKRAY - Среда, 30.12.2015, 12:53
DAKRAY, Можно выпендриться и написать внешний скрипт Сохраните с расширением 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]
DAKRAY, Можно выпендриться и написать внешний скрипт Сохраните с расширением 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
Manyasha, очень интересный подход. Попробовал сохранил, сам файл работает, если его в ручную запустить, а вот из папки автозагрузки после рестарта почему-то не сработало. Тут теперь другой нюанс - компьютер может и не выключаться по несколько дней, и тогда ничего не получится. Может можно как-то к календарю привязать запуск файла, повесить на все первые числа, что-то тип как напоминание на телефоне? В стандартном ОС календаре вроде никаких заметок делать нельзя, может есть какие-то программы? Нужно поискать..
SLAVICK, к сожалению каждый день не открываю. У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу. Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.
Manyasha, очень интересный подход. Попробовал сохранил, сам файл работает, если его в ручную запустить, а вот из папки автозагрузки после рестарта почему-то не сработало. Тут теперь другой нюанс - компьютер может и не выключаться по несколько дней, и тогда ничего не получится. Может можно как-то к календарю привязать запуск файла, повесить на все первые числа, что-то тип как напоминание на телефоне? В стандартном ОС календаре вроде никаких заметок делать нельзя, может есть какие-то программы? Нужно поискать..
SLAVICK, к сожалению каждый день не открываю. У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу. Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.DAKRAY
При открытии книги проверяем, заполнено ли первое число текущего месяца. Если нет - ставим значение из А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
теперь другой нюанс - компьютер может и не выключаться по несколько дней,
Проверку можно производить не только по открытию книги, но и по активации листа, пересчете или просто по измененю
При открытии книги проверяем, заполнено ли первое число текущего месяца. Если нет - ставим значение из А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
У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу
А вот это не очень хорошо. На работу макроса не скажется, но я бы делал базу данных и туда записывал бы все приходы: Дата тип сумма .... Потом и считать легче и историю посмотреть можно, и аналитические отчеты разные сделать. ;)
Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.
Для сводной таблицы - совсем немного. Сколько у Вас примерно квартир? Умножьте на 12 месяцев и к примеру на 3 платеже. Получите необходимое количество строк на год
У меня каждый новый платеж записывается по верх нового и пересчитываются проценты сразу
А вот это не очень хорошо. На работу макроса не скажется, но я бы делал базу данных и туда записывал бы все приходы: Дата тип сумма .... Потом и считать легче и историю посмотреть можно, и аналитические отчеты разные сделать. ;)
Иначе мне пришлось бы на каждую квартиру делать по целому календарю, а это очень много.
Для сводной таблицы - совсем немного. Сколько у Вас примерно квартир? Умножьте на 12 месяцев и к примеру на 3 платеже. Получите необходимое количество строк на год SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Среда, 30.12.2015, 14:14
SLAVICK, для отчетов у меня есть две ячейки (сумма платежей до 20-го числа (где проценты еще не тикают) и после), в которые он просто плюсует каждый новый платеж. Нашел в интернете программу и повесил на нее Manyash'ин скрипт. Всем большое спасибо за оперативность!!!
SLAVICK, для отчетов у меня есть две ячейки (сумма платежей до 20-го числа (где проценты еще не тикают) и после), в которые он просто плюсует каждый новый платеж. Нашел в интернете программу и повесил на нее Manyash'ин скрипт. Всем большое спасибо за оперативность!!!DAKRAY
Может кому ещё понадобится решение подобной задачи. Средствами Эксель создавать планировщик не всегда удобно. Есть очень удобная программа-планировщик nnCron.
Может кому ещё понадобится решение подобной задачи. Средствами Эксель создавать планировщик не всегда удобно. Есть очень удобная программа-планировщик nnCron.emkub