Как посмотреть кто открыл файл excel по сети
Перейти к содержимому

Как посмотреть кто открыл файл excel по сети

  • автор:

Как посмотреть кто открыл файл excel по сети

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет.

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет. Aleksio

Сообщение Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

Отслеживание входа пользователей в книгу Excel ⁠ ⁠

Как понятно из заголовка, мы сделаем так, чтобы открытие рабочего файла на общем сетевом диске не осталось бесследным. Макрос будет фиксировать на отдельном (скрытом) листе имя пользователя, открывшего файл, а также дату-время открытия и закрытия файла.

Этап 1. Создаем «Лог»

Добавим в нашу книгу новый лист, куда будет записываться информация о всех пользователях и назовем его, например, Лог. На нем создадим простую шапку будущего журнала учета посетителей:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Этап 2. Макросы фиксации входа-выхода

Теперь добавим макросы для записи на лист Лог даты-времени и имен пользователей при открытии и закрытии книги. Для этого нужно открыть редактор Visual Basic с помощью сочетания Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer) и найти в левом верхнем углу панель Project (если она не отображается, то включить ее можно сочетанием клавиш Ctrl+R):

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Двойным щелчком откройте модуль ЭтаКнига (ThisWorkbook) и вставьте туда пару наших макросов для обработки событий открытия и закрытия книги:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

‘ищем последнюю занятую строчку в логах

lastrow = Worksheets(«Лог»).Range(«A60000»).End(xlUp).Row

‘заносим дату-время выхода из файла

If lastrow>1 Then Worksheets(«Лог»).Cells(lastrow, 3) = Now

‘сохраняемся перед выходом

ActiveWorkbook.Save

End Sub

Private Sub Workbook_Open()

‘ищем последнюю занятую строчку в логах

lastrow = Worksheets(«Лог»).Range(«A60000»).End(xlUp).Row

‘заносим имя пользователя и дату-время входа в файл

Worksheets(«Лог»).Cells(lastrow + 1, 1) = Environ(«USERNAME»)

Worksheets(«Лог»).Cells(lastrow + 1, 2) = Now

End Sub

Попробуйте открыть-закрыть этот файл пару раз и убедитесь, что на лист Лог попадает ваше имя пользователя (логин входа в Windows) и дата-время:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Этап 3. Улучшаем надежность

Можно было бы скрыть лист Лог и на этом остановиться, но есть одно «но»: если у пользователя, который открывает нашу книгу, макросы разрешены по умолчанию либо он сам их разрешает, нажав в окне предупреждения на кнопку Включить содержимое, то все в порядке:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Но что если пользователь не разрешит выполнение макросов или они отключены у него по умолчанию? Тогда наши макросы отслеживания выполняться не будут и фиксации имени и даты не произойдет 🙁 Как же заставить пользователя разрешить использование макросов?

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

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Суть в том, чтобы по умолчанию скрыть в книге все листы кроме этого, а рабочие листы с данными отображать с помощью специального макроса. Если пользователь не разрешил выполнение макросов, то он увидит в книге только один лист с предупреждением. Если же макросы разрешены, то наш макрос обработки события открытия книги скроет лист с предупреждением и отобразит листы с данными. Чтобы пользователь сам не отобразил их — используем суперскрытие вместо обычного скрытия листов (параметр xlSheetVeryHidden вместо обычного False).

Чтобы реализовать все описанное, слегка изменим наши процедуры в модуле ЭтаКнига (ThisWorkbook)

Private Sub Workbook_BeforeClose(Cancel As Boolean)

‘ищем последнюю занятую строчку в логах

lastrow = Worksheets(«Лог»).Range(«A60000»).End(xlUp).Row

‘заносим дату-время выхода из файла

If lastrow > 1 Then Worksheets(«Лог»).Cells(lastrow, 3) = Now

‘скрываем все листы, кроме листа ПРЕДУПРЕЖДЕНИЕ

Worksheets(«Предупреждение»).Visible = True

For Each sh In ActiveWorkbook.Worksheets

If sh.Name = «Предупреждение» Then

sh.Visible = True

Else

sh.Visible = xlSheetVeryHidden

End If

Next sh

‘сохраняемся перед выходом

ActiveWorkbook.Save

End Sub

Private Sub Workbook_Open()

‘ищем последнюю занятую строчку в логах

lastrow = Worksheets(«Лог»).Range(«A60000»).End(xlUp).Row

‘заносим имя пользователя и дату-время входа в файл

Worksheets(«Лог»).Cells(lastrow + 1, 1) = Environ(«USERNAME»)

Worksheets(«Лог»).Cells(lastrow + 1, 2) = Now

‘отображаем все листы

For Each sh In ActiveWorkbook.Worksheets

sh.Visible = True

Next sh

‘скрываем листы ПРЕДУПРЕЖДЕНИЕ и ЛОГ

Worksheets(«Предупреждение»).Visible = xlSheetVeryHidden

Worksheets(«Лог»).Visible = xlSheetVeryHidden

End Sub

Чтобы просмотреть скрытый Лог откройте редактор VisualBasic (Alt+F11), выделите лист на панели Project и измените его видимость на панели Properties, используя свойство Visible:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Если пользователи настолько продвинутые, что знают про суперскрытые листы и могут их отобразить через редактор Visual Basic или нарушить работу наших макросов, то можно дополнительно поставить пароль на просмотр и изменение макросов. Для этого щелкните правой кнопкой мыши по имени файла в панели Project (строка VBAProject (blackbox.xls)), выберите команду VBA Project Properties и включите флажок Lock project for viewing и задайте пароль на вкладке Protection:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Теперь точно никто не уйдет безнаказанным.

Интересные поправки в макрос из комментария источника:

Вместо поиска последней занятой строки в таких случаях я обычно вставляю новую строку сразу после «шапки». Все предыдущие строки сдвигаются вниз, конечно. В результате немного упрощается код, сортировка получается обратная, «новые сверху», что позволяет быстрее просматривать последние записи, не прокручивая лист. При открытии — вставляется строка, её номер всегда будет 2. При закрытии файла в строку 2 добавляется время. Переполнение этого стека маловероятно, но и проверку такого переполнения проводить не нужно, просто отрезать строки ниже запланированного количества записей, без проверки.

Private Sub Workbook_Open()

Worksheets(«Реестр изменений»).Rows(«2:2»).Insert Shift:=xlDown ‘вставляем между строками 1 и 2 новую строку

Worksheets(«Реестр изменений»).Rows(«501:501»).Delete Shift:=xlUp ‘удаляем строку 501 (реестр на 500 строк)

Worksheets(«Реестр изменений»).Cells(2, 1) = Environ(«USERNAME») ‘запись в первую ячейку второй строки

Worksheets(«Реестр изменений»).Cells(2, 2) = Now ‘запись во вторую ячейку второй строки

661 пост 14.8K подписчиков

Правила сообщества

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях

Важно — сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

Утверждения вроде «пост — отстой», это оскорбление автора и будет наказываться баном.

Простите, а файл перед закрытием ВСЕГДА сохраняется теперь? То есть даже не спросит «сохранить перед выходом?» Это же потенциально просто бомба. Кто-то поработает в файле в расчете его не сохранять, а он все сохранит.

Решение с записью в отдельный файл намного безопаснее

Во костыли костыльные! А аудит чтения файлов на файл сервере не включить?

Вот шаги на англ. —

1. Navigate to the required file share → Right-click it and select «Properties».

Switch to the «Security» tab → Click the «Advanced» button → Go to the «Auditing» tab → Click the «Add» button.

Configure the following settings: Principal: «Everyone»; Type: «All»; Applies to: «This folder, subfolders and files»; Advanced Permissions: «List folder / read data» → Click «OK» three times.

2. Log on to your domain controller and run gpmc.msc → Create a new GPO and define its name → Go to “Computer Policy” → Click “Computer Configuration” → Choose “Windows Settings” → Click “Security Settings” and enable the following settings:

Local Policies → Audit Policy → Audit object access → Define → Success and Failures

Advanced Audit Policy Configuration → System Audit Policies → Object Access → Audit File System → Define → Success and Failures

Advanced Audit Policy Configuration → System Audit Policies → Object Access → Audit Handle Manipulation → Define → Success and Failures

Go to Event Log → Define and specify the following settings:

Maximum security log size: 4GB

Retention method for security log: “Overwrite events as needed”

3. Link the new GPO to an OU with file servers as follows: Go to «Group Policy Management» → Right-click the OU → Click «Link an Existing GPO» → Select the GPO that you created.

4. Force a Group Policy update on the selected OU: Go to «Group Policy Management» → Right-click the OU → Сlick «Group Policy Update».

Open Event Viewer → Search the Security Windows Logs for event ID 4663 with the string «Accesses: ReadData (or ListDirectory)» and review who read or attempted to read files on your file servers.

Detect Who Read a FIle with Native Auditing

По итогу будут в ивент логе события открытия, в том числе копирование файла.

Этот пароль ни капли не надёжный. Да и с диска файл можно скопировать. Технически продвинутый пользователь всё равно обойдет, логгирование надо на уровне файловой системы.

Читать ещё на Пикабу

Как работает ESP: на фига, а главное – зачем?⁠ ⁠

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

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Но есть среди них и те, что значительно облегчают вождение автомобиля даже в плохую погоду. И королем таких помощников справедливо считается ESP.

Откуда ноги растут

ESP – аббревиатура словосочетания Electronic Stability Program, которое в переводе звучит как «электронная система динамической стабилизации автомобиля». Ее основной задачей является сохранение курсовой устойчивости при заносе и боковом скольжении. Поскольку ESP была внедрена в массовое производство автомобилей более трех десятков лет назад, то есть в период, предшествующий глобализации масс-маркетинга, со своим назначением данная система все это время успешно справлялась и по самым грубым подсчетам предотвратила более полумиллиона аварий и гибель сотен тысяч автомобилистов.

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Разработки вспомогательных водительских ассистентов начались еще в 1930-х годах, когда немецкий инженер Роберт Бош запатентовал систему ABS (Anti-lock Braking System), предотвращавшую блокировку колес при экстренном торможении. Данный инструмент перешел в автомобилестроение из авиации. Смысл его заключался в том, что кратковременное разжатие тормозных колодок не давало жестко заблокированному колесу начать скользить и, как следствие, уйти в занос. Однако внедрение столь полезной функции в серийное производство транспортных средств происходило на протяжении почти 40 лет. Первыми здесь были инженеры Mercedes-Benz, которым активно содействовали специалисты Bosch.

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Первые системы ABS были устроены довольно просто и состояли из датчиков скоростей вращения колес, электронной платы управления и специального гидроблока, регулировавшего давление тормозной жидкости отдельно для каждого из прижимных механизмов. Благодаря гибкой и быстрой работе этого модулятора автомобиль получил возможность сохранять стабильность и управляемость даже при экстренном торможении.

Со временем система совершенствовалась, стала более быстродействующей. Вдохновленные успехами автомобильные инженеры пришли к пониманию, что ее потенциал можно использовать не только для торможения. В конце 1980-х компания Bosch серийно внедрила трекшн-контроль – электронный помощник водителя, препятствующий пробуксовке колес. Но главным событием здесь стало появление ESP.

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Первой машиной, на которой появился такой функционал, оказалось купе Mercedes-Benz S-класса, для которого уже в 1995 году ESP вошла в стандартную комплектацию версий с двигателями V12. Однако спустя всего 4 года данным электронным помощником стали оснащать вообще все автомобили с трехлучевой звездой (не последнюю роль в этом сыграл провальный «лосиный тест» хэтчбеков A-класса). В дальнейшем ESP вошла в список обязательных функций практически всех новых моделей мировых брендов.

Принцип работы системы стабилизации

Нагляднее всего принцип действия ESP отрабатывается на скользких покрытиях. Так, даже при несущественном превышении скорости во время входа в поворот автомобиль начинает скользить – в этот момент Electronic Stability Program (либо другие ее аналоги вроде DSC, ESC и пр.) стабилизирует транспортное средство, удерживая его на траектории. За счет чего это происходит?

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Система ESP состоит из датчиков скорости (2), гидроблока ABS (1), а также сенсоров поперечного ускорения (3), угла поворота руля и угловой скорости вращения относительно вертикальной оси (разворачивающего момента) (4). В критический момент электроника (5) «понимает», что машина движется с избыточной скоростью, например, если при входе в поворот происходит ее занос, и выборочно подтормаживает колеса, одновременно снижая подачу топлива. При этом на приборной панели авто может начать моргать пиктограмма ESP, а водитель наверняка услышит хруст тормозных механизмов.

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Алгоритм работы ESP очень сложен и требует длительных испытаний и скрупулезной отладки программы управления. Вполне закономерно, что лучшие системы курсовой устойчивости устанавливаются на дорогих спорткарах и автомобилях люкс-класса – и те и другие априори отличаются более совершенными механическими компонентами. В систему могут добавляться дополнительные функции вроде автоматической просушки тормозных механизмов во время дождя. Но даже в недорогих машинах ESP наверняка может предотвратить потерю управляемости.

Расширенный функционал ESP

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

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Схожим образом ESP ведет себя и в спортивных автомобилях: на треке электроника выборочно подтормаживает колеса, управляя вектором тяги. Это помогает нивелировать ошибки водителя и делает входы авто в повороты более направленными, что улучшает время прохождения круга, к примеру.

Продвинутые системы имеют несколько ступеней работы так называемого трекшн-контроля и самой ESP. Так, на уже не раз упомянутом скользком покрытии электроника лучше отрабатывает опасные моменты, тогда как на сухой ровной дороге пределы ее срабатывания можно «подвинуть», чтобы избежать преждевременного «удушения» двигателя. Регулируемые ABS и трекшн-контроль присутствуют и в гоночных болидах, помогая на длинных дистанциях, когда при прогнозируемом постепенном износе шин снижается их эффективность, а сами пилоты начинают терять концентрацию.

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

В дорогих авто, в свою очередь, предусмотрена «премиальная» версия системы стабилизации – в такой ESP используется шестипоршневый насос (в массовом сегменте применяется двухпоршневый). Независимо от интенсивности нажатия на педаль тормоза такой насос обеспечивает быстрое и равномерное распределение усилия на каждом из механизмов. При этом снижается и уровень вибраций, передающихся на кузов и саму педаль.

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

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

Зачем отключают систему стабилизации

Во многих автомобилях предусмотрена функция ослабления «ошейника» системы стабилизации или ее полного отключения. Чаще всего ESP настроена с большим запасом, моментально реагируя на любую пробуксовку колес или малейшее скольжение автомобиля. Это не всегда идет машине на пользу: например, электроника из-за своего принципа действия может не дать водителю выбраться из грязи или снежной колеи, ограничивая тягу двигателя.

Как работает ESP: на фига, а главное – зачем? Полезное, Автомобилисты, Интересное, Машина, Познавательно, Водитель, Безопасность, Факты, Авто, Транспорт, Техника, Изобретения, Esp, Электроника, Функция, Контроль, Программа, Разработка, Система, Длиннопост

Важно понимать, что возможности электроники отнюдь не безграничны и даже самая умная система стабилизации не в состоянии обнулить законы физики, а значит, не поможет на скорости 150 км/ч вписаться в поворот 90°, ведь здесь все упирается только в коэффициент сцепления с дорогой. Кроме того, в некоторых автомобилях ESP настроены так, что не вмешиваются в управление, пока сам водитель не начнет корректировать занос или не нажмет на тормоз до срабатывания ABS. Как правило, это касается мощных и спортивных машин вроде Porsche или BMW серии М, за рулем которых находятся опытные автогонщики.

В завершение отметим, что даже самая примитивная ESP способна предотвратить потерю управления при перестроении на скользкой дороге или при возникновении ритмического заноса из-за резких маневров. Поэтому цените собственную безопасность и не отключайте данную функцию без веских на то оснований. В противном случае избежать ДТП может и не получиться.

EXCEL — ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО⁠ ⁠

Я решил с двух ног ворваться в тему макросов.

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Кто-то про них слышал, кто-то даже видел, отдельные сверхразумы их даже использовали. Сегодня будет ознакомительный пост: что это вообще такое и как с этим начать работать. Обратите внимание – этот пост тех, кто не знает, что такое макросы и никогда с ними не работал

Первым делом нужно включить вкладку «Разработчик». По умолчанию в Excel ее спрятали, чтобы не взорвать мозг юзерам. Идем в Параметры -> Настройка ленты -> Основные вкладки -> Разработчик (поставить галочку).

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Теперь идем в эту вкладку, нажимаем «Записать макрос» выбираем имя жмакаем «ок». Все, теперь любые действия в Excel надежным образом записываются.

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Давайте теперь что-то сделаем. На пример поменяем заливку ячейки А1, в ячейку A2 напишем значение «Мама, я программист», а в ячейке А3 пропишем формулу текущей даты «=Сегодня()»

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Останавливаем запись макроса. Нажимаем иконку «Макросы», выбираем наш макрос как мы его обозвали, нажимаем кнопку «изменить».

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Появляется окно Microsoft Visual Basic for Applications. Кстати оно также вызывается комбинацией клавиш (Alt + F11) У меня почему-то вызывается только левым Altом, а правым нет, видимо намекая на то что для написания макросов лучше иметь 2 руки (хотя я и одной нажать могу). Появился редактор языка VBA – это язык, который написан специально под офис чтобы на нем писать макросы. В основном окне видим саму эту запись, которую автоматически сделал Excel.

Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range(«A2»).Select
ActiveCell.FormulaR1C1 = «Мама, я программист»
Range(«A3»).Select
ActiveCell.FormulaR1C1 = «=TODAY()»
Range(«A4»).Select
End Sub

Такой инструмент автоматической записи называется макрорекордер, по началу он хорошо помогает вообще понять, что происходит. Теперь давайте разберемся как выглядит записанный макрос (записанный макрос у автора этой статьи может различаться с записанным макросом у вас поскольку форма записи с макроса зависит от последовательности нажатий, способах ввода информации и криворукости пользователь, в любом случае автор этой статьи снимает с себя всю ответственность за любые действия которые привели или могут привести к изменению годовых отчетов, искажению пространственное – временного континуума и прочих непредвиденных вымираний.)

Теперь давайте разбираться что делает этот макрос

Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

(Весь этот кусок от начала говорит нам о том, что с тем элементом что был выделен ранее происходит некоторое дерьмо, в том числе изменение цвета. Вот там, где Color = 255. Все остальное это параметры заливки, которые по итогу не менялись, но макрорекордер решил их тоже записать, на всякий. Это связано с внутренними особенностями работы excel как я понял. Вообще привыкайте к тому что макрорекордер пишет много того что потом вообще можно удалить. Конструкция With – End With позволяет делать несколько действий с одним объектом, на пример выше берется объект Selection.Interior, то есть фон выбранной области и ряду параметров этой заливки назначаются конкретные значения. То есть With нужен для облегчения записи кода, чтобы Selection.Interior не писать вначале каждой строчки.

Range(«A2»).Select –выделяем ячейку «A2»
ActiveCell.FormulaR1C1 = «Мама, я программист» – пишем в ячейку значение
Range(«A3»).Select – выделяем ячейку «А3»
ActiveCell.FormulaR1C1 = «=TODAY()» –пишем в ячейку формулу
Range(«A4»).Select – зачем то выделяем ячейку А4.
End Sub

Теперь при создании нового листа и запуске этого макроса он будет делать все то же самое.

Тут стоит понимать, что половину того что записал макрос можно опустить, так как нам важен результат, а не путь по которому к этому результату пришли, а макрорекордер записывает именно путь. На пример вместо всей конструкции With можно записать

так как мы точно знаем, что хотим поменять только цвет в ячейке А1. Также вместо того чтобы выделять ячейку, а потом в активной ячейке писать формулу можно сразу записать нужное значение в ячейку

Range(“A2”).Value = ”Мама, я программист”

или писать формулу как в третей ячейке

С формулами и значениями лично мне не понятно, как excel их интерпретирует, но в макрорекордре он записывает любой ввод в ячейку как ввод формулы. Благо лично у меня при написании макросов не возникает необходимости писать формулы в ячейки. На пример вместо вставки формулы как это было выше можно написать Range(“A3”).Value = Date(), тогда макрос вставит сразу текущую дату в ячейку как значение.

Опытные макроделы пишут макросы сразу без их записи макрорекордером, но это полезный инструмент для самостоятельного изучения при написании макросов: если не знаешь, что как делается в VBА то запускаешь и делаешь, потом смотришь что он там написал.

Теперь давайте напишем какой ни будь полезный макрос, я буду писать строчки и как можно подробнее их комментировать. Комментарии от программы отделяются символом «‘», он ставится вначале комментария. Прошу учесть, что я самоучка и многого не знаю, и просто напишу так ка делаю это сам, возможно есть более изящные решения. Напоминаю, что это просто ознакомительный опус для тех, кто не в зуб ногой.

Sub Colorization()
‘начало нашего макроса и его название
Dim x As Integer
‘объявляем переменную х типа интеджер, это тип для целых чисел от -32 768 до 32 767 (2 байта),
‘она нам нужна для перебора ячеек
For x = 1 To ActiveSheet.UsedRange.Rows.Count
‘перебираем х от 1 до конца использованной части листа, то есть не весь лист, а там где есть данные.
‘Тут цикл For повторяется от этой строки до строки Next x, которая прописана ниже
If Cells(x, 1).Value = «красный» Then Cells(x, 1).Interior.Color = RGB(255, 0, 0)
‘если значение в ячейке равно «красный» то закрашиваем ячейку в красный цвет. Функция If выполняет часть
‘после Then если условие между If и Then верно. Так как у нас необходимое действие занимает одну
‘строку можно писать в таком виде, если же действий несколько применяется конструкция:
‘If … Then
‘…
‘…
‘End If
If Cells(x, 1).Value = «зеленый» Then Cells(x, 1).Interior.Color = RGB(0, 255, 0)
‘как выше только в зеленый цвет
If Cells(x, 1).Value = «синий» Then Cells(x, 1).Interior.Color = RGB(0, 0, 255)
‘в синий цвет
Next x ‘берем следующее значение х, конец цикла For, который мы начали выше
End Sub ‘конец макроса
Как работает этот макрос: берет первый столбец, сначала 1 ячейку, смотрит что в ней написано, и если это равно «красный», «зеленый» или «синий», то красит фон ячейки в этот цвет, если нет по пропускает. Потом берет вторую и т. д. до конца активной части текущего листа.
Для проверки работы макроса нам нужен лист, где в первом столбце будут случайным образом прописаны цвета «красный», «зеленый», «синий». Запускаем макрос – когда он отработает ячейки будут раскрашены:

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Некоторые пояснения: если не писать просто Cells то макрос будет делать все в активном листе активного окна. Но макрос может идти и в другие листы, файлы, даже в другие приложения офиса, но об этом не сегодня.

После того, как макрос поработал с документом, не удастся кнопкой «назад» вернуть все изменения, так что, если данные важны, то сохраняйте их отдельно и макросом работайте с копией, макросы беспощадны.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *