Макрос создать календарь в excel
Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel. Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря. Поместите файл надстройки из вложения в папку автозагрузки Excel (C:\Program Files\Microsoft Office\OFFICExx\XLSTART). В контекстном меню ячеек.
Программа предназначена для формирования (заполнения) договоров купли-продажи. Исходными данными выступает таблица сделок, и шаблон договора, в который при помощи формул подставляются значения из заданной строки таблицы сделок. Для запуска программы достаточно нажать зеленую кнопку - и сразу же начнётся формирование договоров (файлов Excel из одного листа) в автоматически созданной папке.
Программа предназначена для фиксации времени событий (хронометража) в таблице Excel в режиме онлайн. Типичное применение такой программы - фиксации времени прохождения кругов автогонщиками, но подойдёт данный секундомер и для учёта времени на любых других спортивных состязаниях. Особенности программы: изменяемое количество участников - от 1 до 20 изменяемое количество кругов (.
Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов. АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов. Назначением программы является автоматизация труда работника приёмной комиссии учебного заведения. Программа обеспечивает: Хранение полной.
Программа позволяет упростить ввод данных в бланк заявления на пополнение счёта. Реализована проверка корректности ввода некоторых полей. (например, для полей "серия паспорта" и "номер паспорта" реализована проверка вводимых символов - допускается ввод только заданного количества цифр) Выбор большинства значений производится из выпадающих списков, что позволяет.
Надстройка, позволяющая загрузить из выбранной папки список файлов на лист Excel. Автор: VictorM Особенности надстройки: задаваемая пользователем глубина поиска в подпапках простановка гиперссылок на листе Excel на найденные файлы вывод дополнительных характеристик файла (размер файла, дата создания файла, полный путь) изменяемая маска поиска (поиск по части имени файла, по.
Программа предназначена для отображения этапов выполнения работ на шкале времени в Excel. В качестве исходных данных выступает таблица, заголовками которой являются названия этапов, а в строках, для каждой работы, указана дата каждого этапа. Шкала времени состоит из двух строк, заполненных датами при помощи формул. В первой строке - дата начала временного интервала, во второй строке - дата его.
С помощью нижеуказанного макроса, в примечание активной ячейки можно добавить изображение. При выделении данной ячейки - изображение будет отображаться в комментарии. Данный код добавляет в контекстное меню ячейки новое действие "Вставить изображение" Нижеуказанный макрос лучше всего поместить в "личную книгу макросов" (PERSONAL) В модуль "ЭтаКнига" файла PERSONAL.
Данный секундомер предназначен для фиксации времени прохождения кругов автогонщиками. Возможен одновременный, а также выборочный, старт всех секундомеров (в примере их 4 - по одному на каждого гонщика) По прохождении гонщиком очередного круга достаточно нажать кнопку СТОП - и секундомер начнёт фиксировать время следующего круга. В последнем столбце формулой подсчитывается суммарное время.
Функция LastFile предназначена для поиска самого свежего файла в заданной папке (производится поиск файлов по маске, и из найденных файлов выбирается тот, дата последнего изменения которого максимальна) Пример использования функции: Sub ПримерИспользованияФункции_LastFile() ' Ищем на рабочем столе все файлы TXT, и выводим имя самого нового файла. ' Просматриваются папки с.
В Excel есть инструментарий для запуска макроса по расписанию, - Application.Ontime При помощи этого метода можно запускать макрос с заданным интервалом (например, раз в секунду) Но есть и другой вариант, - использование объекта htmlfile: (код надо поместить в модуль ЭтаКнига - ThisWorkbook) Private m_TimerId As Variant Private m_doc As Object Const ATTRNAME = "VBATimerHandler" .
Программа предназначена для вывода информации о скором наступлении события Каждый раз при открытии файла (и автоматической активации макроса), происходит проверка разницы между текущей датой, и датой окончания действия полиса (столбец номер 7 на скриншоте). Если эта разница находится в пределах 10 дней (параметр можно менять по своему усмотрению), то на отдельный лист выводится ссылка на.
This article contains a sample Microsoft Visual Basic for Applications macro (sub-procedure) that prompts you for the month and year and creates a monthly calendar by using a worksheet.
Resolution
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
To create the calendar, follow these steps.
Microsoft Excel 2003
- Create a workbook.
- On the Tools menu, point to Macro, and then select Visual Basic Editor.
- On the Insert menu, select Module.
- Paste the Visual Basic for Applications script from the "Sample Visual Basic procedure" section into the module sheet.
- On the File menu, select Close and Return to Microsoft Excel.
- Select the Sheet1 tab.
- On the Tools menu, point to Macro, and then select Macros.
- Select CalendarMaker, and then select Run to create the calendar.
Microsoft Excel 2007 or later
- Create a workbook.
- On the Developer ribbon, select Visual Basic.
- On the *Insert menu, select Module.
- Paste the Visual Basic for Applications script from the "Sample Visual Basic procedure" section into the module sheet.
- On the File menu, select Close and Return to Microsoft Excel.
- Select the Sheet1 tab.
- On the *Developer ribbon, click Macros.
- Select CalendarMaker, and then select *Run to create the calendar.
If the Developer ribbon is not visible, open Excel Options to enable it. In Excel 2007, the option is available on the Popular menu. In Excel 2010, the option is available on the Customize Ribbon menu.
Sample Visual Basic procedure
You can add other code to customize the calendar to meet your needs. Insert extra rows for entry on the screen for each day or resize the screen to see the whole calendar based on screen size and resolution.
Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel.
Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря.
Поместите файл надстройки из вложения в папку автозагрузки Excel (C:\Program Files\Microsoft Office\OFFICExx\XLSTART).
В контекстном меню ячеек появляется новый пункт - "Выбрать дату из календаря".
Рядом с ячейками, в которые уже введена дата, будет отображаться маленький календарик, щелчок по которому вызовет большой календарь - для выбора даты.
Второй прикреплённый к статье файл - та же надстройка, только в которой неделя начинается с понедельника (в оригинале надстройки - с воскресенья)
Пароль на проект VBA - 1 (единица)
PS: Этот макрос написал не я (автор - samrad)
Файл с макросом взят на просторах интернета.
Поскольку макрос делал не я, - доработками его я не занимаюсь, никаких гарантий работы дать не могу, по использованию не консультирую.
Комментарии
Супер! Спасибо огромное!
Благодарю, сам бы точно не додумался) Даже у майков на сайте есть подобные вопросы и на их сайте один из вариантов ссылает на http://samradapps.com/datepicker. Красивая обновленная версия.
Отдельное спасибо за исправление падежей в filldocuments. Теперь со склонением имен ошибку не замечал (бывает только со "слова+номер" непонимает как склонять.
Здравствуйте, Дмитрий.
Эта надстройка была сделана очень давно, во времена 32-битных версий Office, и несовместима с 64-битным Excel (который у вас)
Чтобы в 64-битном тоже работало, нужно вносить много изменений в код.
Поищите в интернетах доработанную версию этой надстройки.
Искать можно по фразе samradDatePicker 64 bit
а как изменить макрос на первый день недели "воскресенье"?
заранее благодарю!
Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel.
Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря.
Поместите файл надстройки из вложения в папку автозагрузки Excel (C:\Program Files\Microsoft Office\OFFICExx\XLSTART).
В контекстном меню ячеек появляется новый пункт - "Выбрать дату из календаря".
Рядом с ячейками, в которые уже введена дата, будет отображаться маленький календарик, щелчок по которому вызовет большой календарь - для выбора даты.
Второй прикреплённый к статье файл - та же надстройка, только в которой неделя начинается с понедельника (в оригинале надстройки - с воскресенья)
Пароль на проект VBA - 1 (единица)
PS: Этот макрос написал не я (автор - samrad)
Файл с макросом взят на просторах интернета.
Поскольку макрос делал не я, - доработками его я не занимаюсь, никаких гарантий работы дать не могу, по использованию не консультирую.
Комментарии
А можно сделать этот календарик не надстройкой а файликом экселя и запускать его через событие Private Sub Worksheet_SelectionChange(ByVal Target As Range)?
Спасибо, Антон! Помогло. Заработало. Только появился другой косяк. Раньше (в Office 2003 и Winx32) при выделении ячейки с форматом "Дата" справа показывалась иконка. Теперь, если ячейка пустая (формат "Дата"), иконка не появляется. Она появляется только в ячейке с уже вставленной датой и в следующей ячейке ниже. Как сделать, чтоб иконка появлялась во всех ячейках с форматом "Дата"?
Для работы надстройки календаря на Office 2010 x64 необходимо в код всех модулей после Declare вставить PtrSafe. Затем прогнать код на ошибки - нажать F5, сохранить все изменения в надстройке, и произвести цикл закрытия/открытия рабочей книги Excel.
А возможно ли в данной надстройке поменять цвет шрифта/заливки (например на красный) дней определенных дат, либо регулярных дней недели? Речь конечно же идет о праздниках и выходных. И какие изменения необходимо внести в код в связи с этим?
Предполагаю что речь идет о формате отображения дней, месяцев или лет, от даты на календаре. Меняя формат например на "дней", видно сколько осталось дней от даты на календаре до даты под "мышкой", ну и в других случаях соответственно. На формат ячейки это никак не влияет.
Насколько мне известно, вариант отображения даты зависит от формата ячейки (на ячейке правой кнопкой, "Формат ячеек" вкладка "Число" "Дата" либо из "(все форматы)" выбрать нужный, при желании отредактировав). Календарь ни при чём.
Отличный календарь, жаль, что не выходит у меня настроить его на х64.
Куда вот это вставить?
If Win64 Then
Declare Function MyMathFunc Lib "User32" (ByVal N As LongLong) As LongLong
Else
Declare Function MyMathFunc Lib "User32" (ByVal N As Long) As Long
If
что такое дисплей формат (внизу файла). Связано это как то с изменением формата даты и если да, то как это работает (дата вставляется в одном и том же формате)
Не разобрался, что и где добавить в 64х версии 2010 офиса. Может, кто понял и поделится? Буду признателен
Ага, разобрался, работает и в десятом офисе.
Windows 7 Enterprise SP1 EN x84, Office 2010 Pro x32, - календарь работает нормально и на защищенных листах.(без иконки, я её отключил)
Спасибо, в 2003 Excele у меня этот календарь (по ссылке с другого сайта) на заблокированных листах работает частично. С кнопки Date Picker на панели открывается календарь, но рядом с ячейкой иконка не появляется. В 2010 вообще не заработал, хотя версия с этого сайта работала, но как-то криво.
А с чего вы взяли, что иконка берется не с диска?
Макрос DisplayIcon рисует прямоугольник возле ячейки, и выполняет заливку этой фигуры картинкой из файла
А файл этот предварительно создаётся макросом CreateIconFile.
Сам графический файл побайтово формируется в процедуре WriteIcon, и записывается на жесткий диск.
Очень интересно, как реализована появление иконки в ячейке без подгрузки из диска? Сколько не копался в коде понять не смог.
Кстати! А можно сделать так, чтоб календарик также, как и в Excel, млжно было бы вызвать в Word&
Очень хороший календарик! Правда, одно "но". Лично мне привычнее, чтоб дни недели распологались бы вертикально.
При запуске Excel 2003 выкидывал ошибку и закрывался.
Помогло: запустил скачанный файл, открыл Visual Basic, открыл проект - forms - FrmCal
закрыл Visual Basic. Ничего не менял. Перезапустил Excel.
Всё заработало. Странно, но помогло )))
Очень удобно, спасибо!
Скинул сюда "c:\Users\Администратор\AppData\Roaming\Microsoft\AddIns"
Exсel 2010-й, папки ". OFFICExx\XLSTART" у меня нет.
а можно внизу где "вперед. дней" рядом в углу установить значок "сегодня", чтобы при нажатии на него сразу показывался текущий месяц?
Еще раз привет !
До сих пор у меня не получилось установить эту функцию. При запуске Эксель выдаёт информацию об ошибке (в переводе):
Недопустимый вызов процедуры или параметр (Ошибка 5)
Некоторая часть запроса не может быть закончена. Эта ошибка имеет следующие причины и решения:
Параметр вероятно превышает диапазон разрешенных значений. Например, функция Sin может только принять значения в пределах некоторого диапазона. Положительные параметры меньше чем 2,147,483,648 приняты, в то время как 2,147,483,648 генерирует эту ошибку.
Проверьте(Отметьте) диапазоны, разрешенные для параметров.
Эта ошибка может также произойти, если попытка сделана, чтобы назвать(вызвать) процедуру, которая не правильна(допустима) на текущей платформе. Например, некоторые процедуры могут только быть правильны(допустимы) для Windows Microsoft, или для Macintosh, и так далее.
Проверьте(Отметьте) определенную платформой информацию о процедуре.
Для дополнительной информации, выберите рассматриваемый элемент(пункт) и нажмите F1 (в Windows) или СПРАВКЕ (на Macintosh).
Что это значит? Не могу понять! Заранее спасибо
Добавил в заголовки к этой и другим статьям, описывающим макросы с применением WinAPI, причины и способы устранения проблем несовместимости макросов при работе в 64-битных Windows и Office 2010
Пытался запустить на 64-битной платформе, не работает. Excel говорит, что ошибка компиляции в скрытом модуле modMouse. Что я делаю не так?
я предполагаю, что формат ячейки должен быть "Дата", тогда появится справа значок календаря или вызвать контекстное меню правой кнопкой мыши и выбрать пункт меню "Выбрать из календаря"
Привет, учитель!
Скачал я надстройку, сохранил в положенном месте, а в Экселе ничего не изменилось и не добавилось. Может я чего то не понимаю?
вот русский вариант с понедельником
Спасибо за исправленную версию, прикрепил доработанный файл надстройки к статье.
В коде формы frmCal в строчке Переменная077 = Weekday(Переменная0175, vbSunday) поменяй на (Переменная0175, vbMonday), a затем поменяй на самой форме дни недели соответственно.
А как сделать, что бы неделя начиналась с пн?
ДА прибудет с тобой сила мастер ВбА
Надо найти функцию CreateIconFile, и указать в ней путь к вашему файлу с иконкой:
Если вам нужен календарь на листе Microsoft Excel, то у вас есть много разных способов - от кропотливого вбивания дат вручную до подключения всплывающих календарей из различных надстроек и макросов. Еще один вариант - реализовать универсальный календарь на любую дату с помощью всего одной (правда, весьма страшной с непривычки) формулы массива.
Чтобы ее использовать создайте на листе заготовку вот такого вида:
Дата в ячейке B2 может быть любой, тут важен только месяц и год. В ячейках диапазона B3:H3 могут быть названия дней недели в любом подходящем формате.
Теперь выделите диапазон B4:H9 и введите туда вот такую формулу:
В английском варианте это будет:
Затем нажмите сочетание Ctrl+Shift+Enter, чтобы ввести эту формулу как формулу массива. Все выделенные ячейки должны заполнится датами заданного в B2 месяца:
Останется только навести внешний блеск, добавив форматирование и скрыв день в заголовке B2 и месяц и год в остальных ячейках с помощью окна Формат ячеек (Ctrl+1):
Теперь, меняя дату в ячейке B2, мы будем получать по нашей формуле корректный календарь на любой выбранный месяц любого года. Практически, вечный календарь ;)
Ссылки по теме
зачем МЕСЯЦ(ДАТА(ГОД(B2);МЕСЯЦ(B2);1)) ? достаточно ведь просто МЕСЯЦ(B2)
чуть короче, но по тому же принципу:
Как всегда, пришел МСН и все улучшил!
"Он придет и молча исправит все. " (с) БГ
Потому что у Уокенбаха ТАК
Кстати, да - только что проверил
Вопрос Николаю и МСН. Формулы элегантны и календарь выглядит красиво, но когда я пытаюсь подсветить текущую неделю в условном форматировании, подсветка срабатывает по американскому варианту и выделяет предыдущее воскресенье и текущую шестидневку или, если сегодня воскресенье, текущее воскресенье и грядущую шестидневку. Есть ли способ заставить условное форматирование воспринимать отечественный формат дней недели?
Ребята, а как сделать календарь на несколько лет, например, с 2005 по 2010 гг, чтобы я выбрала февраль 2007 года (месяц и год из выпадающего списка) и мне выдало календарь именно за этот месяц этого года. Года менять у меня получилось, а вот при выборе месяца, календарь не меняется.
Изящно
календарь в одну формулу, это круто. у меня так не получилось бы. тут как-то можно прикрепить файл excel для вопроса?
на прошлой неделе просто загорелся excel'ем, когда посмотрел ролики в интернете (и даже подписался на planetaexcel на youtube), был честно поражен тем сколько всего можно сделать (в универе как-то не так было интересно и понятно). на этой волне решил помочь кадровику и создал "табель рабочего времени". выставляешь дату начала месяца и он разлиновывает/выделяет выходные дни, также создал колонку праздники и он тоже учитывает их. но вот столкнулся с проблемой, а как быть когда праздник выпадает на выходной, он же куда-то переносится. но это еще можно отследить. а вот когда в выходной работаем, его выделять не нужно. короче проблема производственного календаря. возможно на все года это делать нет смысла, но создать доп колонку дней исключений определенного года или т.п. можете подсказать в моём варианте это как-то можно реализовать? сложно объяснить алгоритм, хотелось бы показать сам файл, но не знаю как прикрепить. (сразу оговорюсь, файл .xslm содержит макрос, который прячет/показывает не нужные столбцы из таблицы, которые возникают из-за не одинакового количества дней в месяцах).
Доброго времени суток Николай! Для начало хотелось бы выразить свою благодарность за ответ на мой вопрос и сказать большое спасибо за сайт и возможность черпать необходимую информацию с Вашего сайта!
И вопрос: можно ли создать календарь где в каждой ячейке с датой находилась бы информация т.е таблица excel с проделанной работой или шаблоны с этой таблицей? Для удобства дальнейшего их архивирования и для востоновления сценариев проделанной работы по мере необходимости. Думаю было бы очень удобно в разворачиваемом окне календаря иметь необходимую для работы таблицу.Зарание спасибо!
Здравствуйте! У меня есть вопрос, как нужно написать формулу имея дату начала месяца, чтобы в верхних ячейках прописались все даты месяца(1янв, 2янв и т.д.), а в ячейках под датами соответствующие дни недели? Благодарю за ответ
Добрый день, Николай. Огромное спасибо за сайт. Прошу помочь с очень банальной вещью. У меня смещенный график работы, поэтому чтоб ыто-то планировать нужно считать дни. Хотелось бы автоматизировать этот процесс в экселе. Мой график работы: 4 дня подряд работаю утром (выделить каким-то цветом), потом 2 дня отдыхаю . Далее 4 дня работаю днем (выделить другим цветом), потом 2 дня отдыхаю . и снова 4 - утро, 2 выходных, 4 - днем, 2 выходных, такой цикл. Помогите наложить этот цикл на календарь в цветах. Заранее благодарю.
Здравствуйте, я тоже ищу возможность автоматической окраски выходных дней календаря. строю график из месяца в месяц, хотелось бы его автоматизировать. Заранее благодарен за наводку
Читайте также: