По умолчанию при защите всех ячеек все ячейки заблокированы, поэтому ни одна из них не может быть редактируемой. Чтобы включить редактирование некоторых ячеек, при этом другие ячейки можно разблокировать. Перед защитой листа можно заблокировать только определенные ячейки и диапазоны и при желании позволить определенным пользователям изменять только определенные диапазоны защищенного листа.
Блокировка только определенных ячеек и диапазонов ячеек на защищенном листе
Сделайте следующее:
-
Если лист защищен, сделайте следующее:
-
На вкладке Рецензировка нажмите кнопку Отостановка листа (в группе Изменения).
Нажмите кнопку Защитить лист, чтобы отопрестить защиту листа, если лист защищен.
-
Если будет предложено, введите пароль, чтобы отоблести защиты.
-
-
Выделите лист целиком, нажав кнопку Выделить все.
-
На вкладке Главная щелкните всплывающее кнопку запуска Формат шрифта ячейки. Вы также можете нажать клавиши CTRL+SHIFT+F или CTRL+1.
-
Во всплываемом окне Формат ячеек на вкладке Защита отоберем поле Блокировка и нажмите кнопку ОК.
При защите листа все ячейки будут разблокированы. Теперь вы можете выбрать конкретные ячейки, которые нужно защитить.
-
Выделите на листе только те ячейки, которые необходимо заблокировать.
-
Снова отключим всплывающее окно Формат ячеек (CTRL+SHIFT+F).
-
В этот раз на вкладке Защита выберите поле Заблокировано и нажмите кнопку ОК.
-
На вкладке Рецензирование нажмите кнопку Защитить лист.
-
В списке Разрешить всем пользователям этого таблицы выберите элементы, которые пользователи должны иметь возможность изменять.
Дополнительные сведения об элементах листа
Снятый флажок
Запрещаемые действия
выделение заблокированных ячеек
Перемещение указателя на ячейки, для которых установлен флажок Защищаемая ячейка на вкладке Защита в диалоговом окне Формат ячеек. По умолчанию пользователям разрешено выделять защищенные ячейки.
выделение незаблокированных ячеек
Перемещение указателя на ячейки, для которых снят флажок Защищаемая ячейка на вкладке Защита в диалоговом окне Формат ячеек. По умолчанию пользователям разрешено выделять незаблокированные ячейки, а также перемещаться между незаблокированными ячейками на защищенном листе с помощью клавиши TAB.
формат ячеек
Изменение параметров в диалоговых окнах Формат ячеек или Условное форматирование. Если условное форматирование было применено до установки защиты листа, форматирование будет изменяться при вводе значения, удовлетворяющего определенному условию.
форматирование столбцов
Использование любых команд форматирования столбцов, включая изменение ширины столбца или скрытие столбцов (вкладка Главная, группа Ячейки, кнопка Формат).
форматирование строк
Использование любых команд форматирования строк, включая изменение высоты строки или скрытие строк (вкладка Главная, группа Ячейки, кнопка Формат).
вставку столбцов
Вставка столбцов.
вставку строк
Вставка строк.
вставку гиперссылок
Вставка новых гиперссылок (даже в незаблокированных ячейках).
удаление столбцов
Удаление столбцов.
Если команда удаление столбцов защищена, а команда вставку столбцов не защищена, пользователь не сможет удалять столбцы, которые он вставит.
удаление строк
Удаление строк.
Если команда удаление строк защищена, а команда вставку строк не защищена, пользователь не сможет удалять строки, которые он вставит.
сортировка
Использование команд для сортировки данных (вкладка Данные, группа Сортировка и фильтр).
Пользователи не смогут сортировать диапазоны, содержащие заблокированные ячейки на защищенном листе, независимо от настройки этого параметра.
использование автофильтра
Использование стрелок раскрывающегося списка для изменения фильтра в диапазонах, если применяются автофильтры.
Пользователи не смогут применить или удалить автофильтры на защищенном листе независимо от настройки этого параметра.
использование отчетов сводной таблицы
Форматирование, изменение макета, обновление или изменение отчетов сводной таблицы каким-либо иным образом, а также создание новых отчетов.
изменение объектов
Выполнять следующие действия:
-
Внесение изменений в графические объекты, в том числе карты, встроенные диаграммы, фигуры, текстовые поля и элементы управления, которые не были разблокированы перед установкой защиты листа. Например, если на листе есть кнопка, запускающая макрос, ее можно нажать, чтобы запустить макрос, но нельзя удалить.
-
Внесение каких-либо изменений (например, форматирование) во встроенную диаграмму. Диаграмма по-прежнему будет обновляться при изменениях ее исходных данных.
-
Добавление или изменение примечаний.
изменение сценариев
Просмотр скрытых сценариев, изменение сценариев с установленным запретом на изменения и удаление этих сценариев. Пользователи могут изменять значения в изменяемых ячейках, если ячейки не защищены, и добавлять новые сценарии.
Элементы листа диаграммы
Флажок
Запрещаемые действия
Содержание
Изменение элементов, являющихся частью диаграммы, таких как ряды данных, оси и легенды. При этом в диаграммах будут отображаться изменения, вносимые в исходные данные.
Объекты
Изменение графических объектов, включая фигуры, текстовые поля и элементы управления (если объекты не были разблокированы до включения защиты листа диаграммы).
-
-
В поле Пароль для отключения защиты листа введите пароль для листа, нажмите кнопку ОК, а затем повторно введите пароль для подтверждения.
-
Пароль необязателен. Если не задать пароль, любой пользователь сможет снять защиту с листа и изменить защищенные элементы.
-
Выберите легко запоминающийся пароль, потому что в случае утраты пароля вы больше не сможете получить доступ к защищенным элементам листа.
-
Разблокировка диапазонов ячеек на защищенном листе для их изменения пользователями
Чтобы предоставить определенным пользователям разрешение изменять диапазоны на защищенном листе, на компьютере должна быть установлена операционная система Microsoft Windows XP или более поздней версии, а сам компьютер должен находиться в домене. Вместо использования разрешений, для которых требуется домен, можно также задать пароль для диапазона.
-
Выберите листы, которые нужно защитить.
-
На вкладке Рецензирование в группе Изменения нажмите кнопку Разрешить изменение диапазонов.
Эта команда доступна, только если лист не защищен.
-
Выполните одно из следующих действий:
-
Чтобы добавить новый редактируемый диапазон, нажмите кнопку Создать.
-
Чтобы изменить существующий редактируемый диапазон, выберите поле Диапазоны защищенного листа, разблокируемые паролем, затем нажмите кнопку Изменить.
-
Чтобы удалить редактируемый диапазон, выберите поле Диапазоны защищенного листа, разблокируемые паролем, затем нажмите кнопку Удалить.
-
-
В поле Название введите имя диапазона, который необходимо разблокировать.
-
В поле Содержит ячейки введите знак равенства (=), а затем ссылку на диапазон, который необходимо разблокировать.
Также можно нажать кнопку Свернуть диалоговое окно, выбрать на листе диапазон, а затем снова нажать кнопку Свернуть диалоговое окно, чтобы вернуться к диалоговому окну.
-
Для управления доступом с помощью пароля в поле Пароль диапазона введите пароль для доступа к диапазону.
При использовании разрешений на доступ задавать пароль необязательно. Использование пароля позволяет просматривать учетные данные всех полномочных пользователей, изменяющих диапазон.
-
Для установки разрешений на доступ выберите пункт Разрешения и нажмите кнопку Добавить.
-
В поле Введите имена объектов для выбора (примеры) введите имена пользователей, которым нужно разрешить изменять диапазоны.
Чтобы посмотреть, как должны вводиться имена пользователей, щелкните примеры. Чтобы проверить правильность имен, нажмите кнопку Проверить имена.
-
Нажмите кнопку ОК.
-
Чтобы указать тип разрешений для выбранного пользователя, в поле Разрешения установите или снимите флажок Разрешить или Запретить, а затем нажмите кнопку Применить.
-
Нажмите кнопку ОК два раза.
При необходимости введите заданный пароль.
-
В диалоговом окне Разрешить изменение диапазонов нажмите кнопку Защитить лист.
-
В списке Разрешить всем пользователям этого листа выберите элементы, которые должны изменять пользователи.
Дополнительные сведения об элементах листа
Снятый флажок
Запрещаемые действия
выделение заблокированных ячеек
Перемещение указателя на ячейки, для которых установлен флажок Защищаемая ячейка на вкладке Защита в диалоговом окне Формат ячеек. По умолчанию пользователям разрешено выделять защищенные ячейки.
выделение незаблокированных ячеек
Перемещение указателя на ячейки, для которых снят флажок Защищаемая ячейка на вкладке Защита в диалоговом окне Формат ячеек. По умолчанию пользователям разрешено выделять незаблокированные ячейки, а также перемещаться между незаблокированными ячейками на защищенном листе с помощью клавиши TAB.
формат ячеек
Изменение параметров в диалоговых окнах Формат ячеек или Условное форматирование. Если условное форматирование было применено до установки защиты листа, форматирование будет изменяться при вводе значения, удовлетворяющего определенному условию.
форматирование столбцов
Использование любых команд форматирования столбцов, включая изменение ширины столбца или скрытие столбцов (вкладка Главная, группа Ячейки, кнопка Формат).
форматирование строк
Использование любых команд форматирования строк, включая изменение высоты строки или скрытие строк (вкладка Главная, группа Ячейки, кнопка Формат).
вставку столбцов
Вставка столбцов.
вставку строк
Вставка строк.
вставку гиперссылок
Вставка новых гиперссылок (даже в незаблокированных ячейках).
удаление столбцов
Удаление столбцов.
Если команда удаление столбцов защищена, а команда вставку столбцов не защищена, пользователь не сможет удалять столбцы, которые он вставит.
удаление строк
Удаление строк.
Если команда удаление строк защищена, а команда вставку строк не защищена, пользователь не сможет удалять строки, которые он вставит.
сортировка
Использование команд для сортировки данных (вкладка Данные, группа Сортировка и фильтр).
Пользователи не смогут сортировать диапазоны, содержащие заблокированные ячейки на защищенном листе, независимо от настройки этого параметра.
использование автофильтра
Использование стрелок раскрывающегося списка для изменения фильтра в диапазонах, если применяются автофильтры.
Пользователи не смогут применить или удалить автофильтры на защищенном листе независимо от настройки этого параметра.
использование отчетов сводной таблицы
Форматирование, изменение макета, обновление или изменение отчетов сводной таблицы каким-либо иным образом, а также создание новых отчетов.
изменение объектов
Выполнять следующие действия:
-
Внесение изменений в графические объекты, в том числе карты, встроенные диаграммы, фигуры, текстовые поля и элементы управления, которые не были разблокированы перед установкой защиты листа. Например, если на листе есть кнопка, запускающая макрос, ее можно нажать, чтобы запустить макрос, но нельзя удалить.
-
Внесение каких-либо изменений (например, форматирование) во встроенную диаграмму. Диаграмма по-прежнему будет обновляться при изменениях ее исходных данных.
-
Добавление или изменение примечаний.
изменение сценариев
Просмотр скрытых сценариев, изменение сценариев с установленным запретом на изменения и удаление этих сценариев. Пользователи могут изменять значения в изменяемых ячейках, если ячейки не защищены, и добавлять новые сценарии.
Элементы листа диаграммы
Флажок
Запрещаемые действия
Содержание
Изменение элементов, являющихся частью диаграммы, таких как ряды данных, оси и легенды. При этом в диаграммах будут отображаться изменения, вносимые в исходные данные.
Объекты
Изменение графических объектов, включая фигуры, текстовые поля и элементы управления (если объекты не были разблокированы до включения защиты листа диаграммы).
-
-
В поле Пароль для отключения защиты листа введите пароль, нажмите кнопку ОК, а затем повторно введите пароль для подтверждения.
-
Пароль необязателен. Если его не задать, любой пользователь сможет снять защиту с листа и изменить защищенные элементы.
-
Убедитесь, что вы выбрали пароль, который можете запомнить. Если вы потеряете пароль, вы не сможете получить доступ к защищенным элементам на этом сайте.
-
Если ячейка принадлежит к нескольким диапазонам, ее смогут редактировать пользователи, имеющие права на редактирование любого из этих диапазонов.
-
Если пользователь пытается редактировать несколько ячеек одновременно и имеет разрешение на изменение только некоторых из них, пользователю будет предложено изменить ячейки по одному.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Хитрости »
12 Июнь 2012 187370 просмотров
Каждому пользователю свой лист/диапазон
Очень часто на своих тренингах и в форумах я слышу вопрос: как защитить доступ к книге так, чтобы для каждого пользователя был доступен только свой лист/листы? А другие ячейки или листы были недоступны для изменения или просмотра? Или скрыть отдельные столбцы с глаз пользователя? Часть подобного функционала предоставляется стандартными средствами Excel, а другая(например, доступность просмотра только конкретных листов) достигается только через макросы. В этой статье хочу привести несколько примеров реализации подобных разграничений прав между пользователями, их плюсы и минусы.
- Разграничение доступа к ячейкам стандартными средствами
Разграничение прав доступа при помощи VBA
- Доступ пользователям только к определенным листам
- Доступ пользователю к определенным листам и возможность изменять только отдельные ячейки
- Доступ к определенным листам и скрытие указанных строк/столбцов
- Практический пример с использованием администратора
Разграничение доступа к ячейкам стандартными средствами
Для разграничения доступа к ячейкам на листе можно воспользоваться инструментом Разрешить изменение диапазонов(Allow Users to Edit Ranges), расположенном на вкладке Рецензирование(Review), группа Изменения(Changes):
Это стандартный инструмент, для использования которого нет необходимости подключать что-то дополнительно и он относительно прост в использовании.
Данный инструмент позволяет назначить каждому отдельному диапазону ячеек свои пароли, диапазоны могут располагаться на разных листах книги или на одном листе:
Например, сотрудники коммерческого отдела в общем файле бюджета(картинка выше) должны иметь возможность заполнять только ячейки строк со статьями выручки (строки 8-11, 13-14), а производственный отдел строки 18-22, в которых расположены статьи по расходам производственного отдела. При этом сотрудники коммерческого отдела не должны иметь возможность изменять данные статей другого отдела – каждый только данные своих статей.
Для начала необходимо для сотрудников каждого отдела создать отдельные диапазоны, к которым они будут иметь доступ. Для этого переходим на вкладку Рецензирование(Review) -группа Изменения(Changes) —Разрешить изменение диапазонов(Allow Users to Edit Ranges). Появится диалоговое окно создания/изменения диапазонов:
Нажимаем Создать(New). Появится другое окно, в котором необходимо указать имя диапазона
(Title)
(
коммерческий
), доступные для изменения ячейки
(Refers to cells)
(
C8:N11;C13:N14
) и вписать пароль
(Range password)
(
1111
):
После нажатия Ок появится окно подтверждения пароля. Необходимо указать тот же пароль, что был указан ранее для данного диапазона.
Примечание: если нажать на кнопку Разрешения(Permissions), то можно установить доступ без пароля для конкретных групп пользователей, если группы настроены политикой доменной сети.
Точно так же создаем второй диапазон – «производственный», но для него указываем другой пароль(например –
2222
). После этого у нас в главном окне управления диапазонами будет два диапазона:
Здесь можно еще раз проверить все ли правильно указано, при необходимости изменить (так же изменить диапазоны можно в любое время, вызвав данное окно с вкладки Рецензирование(Review) —Разрешить изменение диапазонов). После этого нажимаем Применить(Apply).
Теперь, чтобы такая защита сработала необходимо непосредственно защитить лист. Это можно сделать либо сразу из этого же окна, нажав кнопку Защитить лист, либо закрыв окно перейти на вкладку Рецензирование(Review) и в группе Изменения(Changes) выбрать Защитить лист(Protect sheet):
В появившемся окне проставляем галочки для тех действий, которые мы хотим разрешить делать пользователю на защищенном листе без ввода пароля(например, на картинке выше помимо стандартного выделения ячеек разрешена вставка столбцов. Подробнее про защиту листов и ячеек можно прочитать в статье — Защита листов и ячеек в MS Excel). Указываем пароль (например
3333
), подтверждаем пароль в появившемся окне и нажимаем Ок. Лист защищен.
Что важно: не следует указывать здесь пароль, который совпадает хотя бы с одним из паролей для отдельных диапазонов. Думаю, понятно почему: чтобы защиту не могли снять те, кому этого не положено делать.
Теперь остается сообщить сотрудникам отделов их пароли: производственный — 2222, коммерческий – 1111.
При первой попытке изменить данные в ячейках C8:N11;C13:N14- будет запрошен пароль на изменение ячеек созданного диапазона «коммерческий» (1111):
Если пользователю известен пароль для диапазона – его необходимо будет ввести лишь один раз. В дальнейшем для ввода данных в ячейки этого диапазона вводить пароль не придется до тех пор, пока файл не будет закрыт. После повторного открытия файла пароль необходимо будет указать заново.
Однако, если сотрудник другого отдела попытается изменить ячейки производственного отдела и пароль ему неизвестен – изменить данные этих ячеек не получится.
Также ни сотрудники коммерческого отдела, ни сотрудники производственного отдела не смогут изменить данные столбцов А и В(№ и наименование статьи), заголовки таблицы(строки с 1-ой по 7-ю) и строки с итоговыми формулами (12, 15 и т.д. – закрашенные зеленым). Они смогут изменять только те ячейки, которые перечислены в назначенных каждому отделу диапазонах. Внести данные в другие ячейки(не перечисленные в разрешенных диапазонах) можно будет исключительно сняв общий доступ с книги, а после этого защиту с листа –Рецензирование(Review) -группа Изменения(Changes) —Снять защиту листа(Unprotect sheet). Но снять общую защиту сможет только тот, кто её создавал и кому известен «главный» пароль. Как правило это администратор или некий «смотрящий» файла и другие пользователи этот пароль не знают.
Плюс подобного метода в том, что такая защита может быть установлена для книги в общем доступе(подробнее про книги с общим доступом можно прочитать в статье — Ведение журнала сделанных в книге изменений).
Что необходимо учитывать для книг с общим доступом: создавать диапазоны для пользователей и устанавливать защиту на лист необходимо ДО назначения книге общего доступа, т.к. после того, как книге будет назначен общий доступ изменять параметры защиты листов и книги запрещено. При этом запрещены как установка защиты так и её снятие.
Минус данного метода в том, что нет дружественного интерфейса снятия защиты. Например, при попытке изменить какие-то ячейки одного из назначенных диапазонов нет никакой информации о том, что это за диапазон(коммерческий или производственный). Что в свою очередь может запутать пользователя. Так же данным методом невозможно скрыть листы, либо отдельные строки и столбцы. Можно лишь запретить изменение ячеек.
Разграничение прав доступа при помощи VBA
Самый большой минус всех методов ниже:
они
не будут работать при отключенных макросах
(Что такое макрос и где его искать?). Во всех приложенных к статье файлах это предусмотрено и если макросы будут отключены, то пользователь увидит лист, предлагающий включить макросы. Подробнее см. в статье: Как запустить файл с включенными макросами?
Плюс подобного подхода
— мы практически не ограничены в правилах: можем скрывать от отдельных пользователей любые листы, строки и столбцы, защищать отдельные ячейки и т.п. Я ниже приведу несколько вариантов реализации защиты кодами, а вам останется лишь выбрать тот, который больше подходит под задачу. Первые три больше демонстрационные, чтобы показать что можно сделать. А вот последний пример — Практический пример с использованием администратора — наиболее приближен к задачам, применяемым в работе и наиболее удобен для распространения среди пользователей.
Проект VBA во всех файлах открыт для просмотра и изменений. Однако перед распространением решений в реальности лучше его закрыть от просмотра и изменений — Как защитить проект VBA паролем.
Важно: приведенные ниже решения могут работать некорректно в книгах с общим доступом. А те решения, в которых устанавливается защита на листы вообще не будут работать, т.к. для книг с общим доступом невозможно изменять параметры защиты листов и книг.
- Доступ пользователям только к определенным листам
Исходная задача: дать возможность пользователю видеть и работать только на определенных листах — тех, которые мы ему выделили. При этом он даже не подозревает, что есть другие листы. Как работает. Открываем файл — автоматом отображается лишь один лист «Main», доступный всем пользователям, жмем на кнопку, появляется форма:
В форме необходимо выбрать пользователя и указать пароль, соответствующий этому пользователю. Важно: Пароли и список доступных листов можно редактировать на очень скрытом листе «Users». Для каждого пользователя можно указать несколько листов. Указывать имена листов необходимо в точности такие же, какие они на самом деле. Это значит, что и регистр букв и каждый пробел должен быть учтен. Для разделения записей с несколькими листами используется точка-с-запятой(Лист1;Лист2;Лист3).
На листе «Main» перечислены имена пользователей, пароли для них и доступные для просмотра листы. Данная информация указаны только для ознакомления и тестов. Менять данные для реальных задач необходимо на листе «Users».Важно: файл может работать нестабильно в книгах с общим доступом.
Скачать пример
Tips_Macro_Sheets_for_Users.xls (84,5 KiB, 10 565 скачиваний)
- Доступ пользователю к определенным листам и возможность изменять только отдельные ячейки
Помимо того, что можно ограничить пользователю свободу выбора листов, ему можно еще и ограничить диапазоны ячеек, которые ему разрешено изменять. Иначе говоря, человек сможет работать только на Лист1 и Лист2 и вносить изменения только в указанные для каждого из листов ячейки. Файл с примером работает так же, как и пример выше: открываем книгу — видим только один лист «Main», жмем кнопку. Появляется форма, выбираем пользователя. Появятся только разрешенные листы и на этих листах можно изменять только те ячейки, который мы разрешим в настройках. При этом диапазоны для изменения можно указать для каждого листа разные. Важно: Пароли, список доступных листов и диапазонов можно редактировать на очень скрытом листе «Users». Для этого его необходимо отобразить, как описано в статье: Как сделать лист очень скрытым.
Чтобы разрешить изменять диапазоны на Лист1 — А1:А10 и А15:А20, а на Лист2 — В1:В10 и В15:В20, необходимо на листе «Users» указать листы: Лист1;Лист2 и диапазоны: A1:A10,A15:A20;B1:B10,B15:B20
На листе «Main» пароли и фамилии указаны только для ознакомления и тестов. Менять данные для реальных задач необходимо на листе «Users».
Пароль на листы указывается напрямую в коде. Для изменения пароля необходимо перейти в редактор VBA(Alt+F11), раскрыть папку Modules, выбрать там модуль sPublicVars и изменить значение 1234 в строке: Public Const sPWD As String = «1234»:
Важно: защита диапазонов достигается за счет установки защиты листа. Поэтому файл не будет работать в книгах с общим доступом.
Скачать пример
Tips_Macro_Sheets_Rng_for_Users.xls (86,0 KiB, 4 882 скачиваний)
- Доступ к определенным листам и скрытие указанных строк/столбцов
И еще чуть-чуть испортим жизнь пользователю: каждому пользователю видны только свои листы и виден только свой диапазон на этом листе. Точнее — строка или столбец. Все так же, как и в файлах выше(Пароли, список доступных листов и диапазонов можно редактировать на очень скрытом листе «Users». Для этого его необходимо отобразить, как описано в статье: Как сделать лист очень скрытым).
На листе «Users» доступны следующие настройки: в самом правом столбце необходимо указать скрывать столбцы(C) или строки(R) указанного диапазона.
Например, указаны диапазоны на Лист1 — А1:А10 и А15:А20, а на Лист2 — В1:В10 и В15:В20, а в правом столбце — R;C. Значит на Лист1 будут скрыты строки 1:10, 15:20, а на Лист2 столбец В. Почему так заумно? Потому что нельзя скрыть только отдельные ячейки — можно скрыть лишь столбцы или строки полностью.
На листе «Main» пароли и фамилии указаны только для ознакомления и тестов. Менять данные для реальных задач необходимо на листе «Users».
Пароль на листы указывается напрямую в коде. Для изменения пароля необходимо перейти в редактор VBA(Alt+F11), раскрыть папку Modules, выбрать там модуль sPublicVars и изменить значение 1234 в строке: Public Const sPWD As String = «1234»:
Важно: защита отображения скрытых строк и столбцов достигается за счет установки защиты листа. Поэтому файл не будет работать в книгах с общим доступом.
Скачать пример
Tips_Macro_Sheets_Hide_Rng_for_Users.xls (100,0 KiB, 4 537 скачиваний)
- Практический пример с использованием администратора
Все примеры выше имеют один маленький недостаток: при открытии файла виден один лист и надо жать на кнопку, чтобы выбрать пользователя. Это не всегда удобно. Плюс есть недостаток куда хуже: для изменения настроек всегда надо вручную отображать лист настроек, а может и другие листы. Поэтому ниже я приложил файл, форма в котором открывается сразу после открытия файла:
Если выбрать «Пользователь» — admin, указать «Пароль» — 1, то все листы файла будут отображены. Другим пользователям будут доступны только назначенные листы. Таким образом, пользователь, назначенный администратором сможет легко и удобно менять настройки и права доступа пользователей: добавлять и изменять пользователей, их пароли, листы для работы(они доступны на листе Users, как и в файлах выше). После внесения изменений надо просто закрыть файл — он сохраняется автоматически, скрывая все лишние листы.
При этом если пользователя нет в списке или пароли ему неизвестны, то при нажатии кнопки Отмена или закрытии формы крестиком файл так же закроется. Таким образом к файлу будет доступ только тем пользователям, которые перечислены в листе Users, что исключает доступ к файлу посторонних лиц.
Если макросы будут отключены, то пользователь увидит лишь один лист — с инструкцией о том, как включить макросы. Остальные листы будут недоступны.
В реальных условиях не лишним будет закрыть доступ к проекту VBA паролем: Как защитить проект VBA паролемВажно: файл может работать нестабильно в книгах с общим доступом.
Скачать пример
Tips_Macro_UsersRulesOnStart.xls (72,0 KiB, 6 294 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Обращение к ячейке на листе Excel из кода VBA по адресу, индексу и имени. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке по адресу
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Range(«C5») Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Cells(5, 3) Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Cells(5, «C») Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).[C5] |
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
ActiveCell Range(«A1») Cells(1, 1) Cells(1, «A») [A1] |
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
‘по основному имени листа Лист2.Cells(2, 7) ‘по имени ярлыка Sheets(«Имя ярлыка»).Cells(3, 8) |
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.
Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):
Обращение к ячейке Range("A1:C3").Cells(5)
соответствует выражению Range("B2")
.
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range("Итого")
.
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Cells(2, 4).Value = 15 Cells(2, 4) = 15 Range(«A1») = «Этот текст записываем в ячейку» ActiveCell = 28 + 10*36 |
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа, как в разделе «Обращение к ячейке».
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания «=»:
Sub Test() Dim a1 As Integer, a2 As Integer, a3 As Integer Range(«A3») = 6 Cells(2, 5) = 15 a1 = Range(«A3») a2 = Cells(2, 5) a3 = a1 * a2 MsgBox a3 End Sub |
Точно также можно обмениваться информацией между ячейками:
Cells(2, 2) = Range(«A4») |
Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля. пустой строки или Empty:
Cells(10, 2).ClearContents Range(«D23») = 0 ActiveCell = «» Cells(5, «D») = Empty |
01.01.2007
Когда мы уже умеем открывать книгу, выбирать рабочий лист и сохранять книгу, то чтобы создать простой документ в Excel, необходимо и достаточно научиться записывать информацию в ячейки таблицы. Шаблоны многих документов уже разработаны и представлены в разнообразных справочных системах, и целесообразно научиться использовать их в своих приложениях.
Лист книги Excel состоит из множества строк и столбцов, пересечения которых представляют собой отдельные ячейки или множество ячеек, если пересекается множество строк и столбцов. Каждая ячейка может содержать информацию в виде данных различного типа или формул. Кроме данных, ячейка имеет другие свойства, которые определяют ее размер, цвет, стиль, формат данных и другие параметры.
Доступ к ячейке или ячейкам в Excel предоставляет объект Range. Этот объект обладает всеми необходимыми свойствами и методами, чтобы писать, читать из ячейки и изменять все ее свойства. Для того, чтобы просто записать информацию в ячейку, необходимо присвоить объекту Range значение, записанное в переменной типа variant. Например: Range[‘A1’]:=123.25; или Range[‘A1′]:=’ячейка’;. Для записи (чтения) в ячейку из приложений на Delphi разработаем несколько функций. Аргумент (range:string) этих функций может принимать значения, которые соответствуют одной ячейке (например ‘A1’) или группе ячеек (например ‘A1:D5’).
Microsoft Excel предоставляет пользователю несколько, условно выражаясь, уровней защиты — от простой защиты отдельных ячеек до шифрования всего файла шифрами крипто-алгоритмов семейства RC4. Разберем их последовательно…
Уровень 0. Защита от ввода некорректных данных в ячейку
Самый простой способ. Позволяет проверять что именно пользователь вводит в определенные ячейки и не разрешает вводить недопустимые данные (например, отрицательную цену или дробное количество человек или дату октябрьской революции вместо даты заключения договора и т.п.) Чтобы задать такую проверку ввода, необходимо выделить ячейки и выбрать на вкладке Данные (Data) кнопку Проверка данных (Data Validation). В Excel 2003 и старше это можно было сделать с помощью меню Данные — Проверка (Data — Validation). На вкладке Параметры из выпадающего списка можно выбрать тип разрешенных к вводу данных:
Соседние вкладки этого окна позволяют (при желании) задать сообщения, которые будут появляться перед вводом — вкладка Сообщение для ввода (Input Message), и в случае ввода некорректной информации — вкладка Сообщение об ошибке (Error Alert):
Уровень 1. Защита ячеек листа от изменений
Мы можем полностью или выборочно запретить пользователю менять содержимое ячеек любого заданного листа. Для установки подобной защиты следуйте простому алгоритму:
- Выделите ячейки, которые не надо защищать (если таковые есть), щелкните по ним правой кнопкой мыши и выберите в контекстном меню команду Формат ячеек (Format Cells). На вкладке Защита (Protection) снимите флажок Защищаемая ячейка (Locked). Все ячейки, для которых этот флажок останется установленным, будут защищены при включении защиты листа. Все ячейки, где вы этот флаг снимете, будут доступны для редактирования несмотря на защиту. Чтобы наглядно видеть, какие ячейки будут защищены, а какие — нет, можно воспользоваться этим макросом.
- Для включения защиты текущего листа в Excel 2003 и старше — выберите в меню Сервис — Защита — Защитить лист (Tools — Protection — Protect worksheet), а в Excel 2007 и новее — нажмите кнопку Защитить лист (Protect Sheet) на вкладке Рецензирование (Reveiw). В открывшемся диалоговом окне можно задать пароль (он будет нужен, чтобы кто попало не мог снять защиту) и при помощи списка флажков настроить, при желании, исключения:
Т.е., если мы хотим оставить пользователю возможность, например, форматировать защищенные и незащищенные ячейки, необходимо установить первых три флажка. Также можно разрешить пользователям использовать сортировку, автофильтр и другие удобные средства работы с таблицами.
Уровень 2. Выборочная защита диапазонов для разных пользователей
Если предполагается, что с файлом будут работать несколько пользователей, причем каждый из них должен иметь доступ в свою область листа, то можно установить защиту листа с разными паролями на разные диапазоны ячеек.
Чтобы сделать это выберите на вкладке Рецензирование (Review) кнопку Разрешить изменение диапазонов (Allow users edit ranges). В версии Excel 2003 и старше для этого есть команда в меню Сервис — Защита — Разрешить изменение диапазонов (Tools — Protection — Allow users to change ranges):
В появившемся окне необходимо нажать кнопку Создать (New) и ввести имя диапазона, адреса ячеек, входящих в этот диапазон и пароль для доступа к этому диапазону:
Повторите эти действия для каждого из диапазонов разных пользователей, пока все они не окажутся в списке. Теперь можно нажать кнопку Защитить лист (см. предыдущий пункт) и включить защиту всего листа.
Теперь при попытке доступа к любому из защищенных диапазонов из списка, Excel будет требовать пароль именно для этого диапазона, т.е. каждый пользователь будет работать «в своем огороде».
Уровень 3. Защита листов книги
Если необходимо защититься от:
- удаления, переименования, перемещения листов в книге
- изменения закрепленных областей («шапки» и т.п.)
- нежелательных изменений структуры (сворачивание строк/столбцов при помощи кнопок группировки «плюс/минус»)
- возможности сворачивать/перемещать/изменять размеры окна книги внутри окна Excel
то вам необходима защита всех листов книги, с помощью кнопки Защитить книгу (Protect Workbook) на вкладке Рецензирование (Reveiw) или — в старых версиях Excel — через меню Сервис — Защита — Защитить книгу (Tools — Protection — Protect workbook):
Уровень 4. Шифрование файла
При необходимости, Excel предоставляет возможность зашифровать весь файл книги, используя несколько различных алгоритмов шифрования семейства RC4. Такую защиту проще всего задать при сохранении книги, т.е. выбрать команды Файл — Сохранить как (File — Save As), а затем в окне сохранения найти и развернуть выпадающий список Сервис — Общие параметры (Tools — General Options). В появившемся окне мы можем ввести два различных пароля — на открытие файла (только чтение) и на изменение:
Ссылки по теме
- Как установить/снять защиту на все листы книги сразу (надстройка PLEX)
- Подсветка незащищенных ячеек цветом
- Правильная защита листов макросом
Программа Microsoft Office Excel предназначена для того, чтобы работать с информацией в таблицах. Она представлена в виде сетки, которую образуют столбцы и строки. В некоторых случаях у автора «книги» — документа Excel — возникает необходимость защитить данные от изменения. Вы можете предохранить произвольное количество клеток от введения неправильных данных или редактирования. Это нужно для того, чтобы:
- ограничить права пользователей или групп, установив пароль на определённый перечень (или всю книгу);
- предохранить элементы от того, чтобы не изменить клетку самостоятельно и не потерять информацию.
В статье рассмотрены доступные в Excel варианты.
Именно так вы можете предотвратить вмешательство в книгу Excel от случайного или намеренного вмешательства того или иного юзера. Это позволит избежать утери данных при сохранении и закрытии документа, а также попытки восстановить значения, что занимает время и не всегда является возможным.
К сожалению, в Excel нет кнопки, которая мгновенно ограничит доступ к той или иной области. Тем не менее всё можно сделать с помощью возможностей программы, не прибегая к другим. Для того чтобы установить подобную защиту от введения неправильных данных или изменения, воспользуйтесь одним из способов:
- ограничение на ввод некорректной информации;
- предохранение выборочного количества или определённой группы значений от редактирования;
- установка различных прав для разных юзеров или групп;
- ограничение прав к одному или нескольким страницами книги Excel.
Вы также можете запаролить функции сохранности, делая изменение недоступным для людей, не знающих кода доступа. Например, это позволяет разбить книгу на области, в каждой из которых работает один человек. Комбинируя различные функции, вы сможете добиться желаемого типа ограничения прав на редактирование. Ограничение на изменение также можно отменить (если был установлен пароль, потребуется ввести его).
Ограничение от ввода некорректных данных
Настройку можно произвести для различного типа защищаемых данных.
Указанный способ — самый простой в применении. С его помощью вы сможете контролировать то, что вы (или другой пользователь) вводите в клетку. Можно отсеивать данные, которые не проходят по определённым критериям, что также можно указать. Таким образом, вы можете предотвратить ввод отрицательной цены, дробного количества человек или неправильной даты определённого события. Для того чтобы установить защиту, нужно:
- Выделить элементы, на которые будет распространяться функция.
- Перейти во вкладку «Данные» в Excel, затем в области «Работа с данными» кликнуть «Проверка данных».
- Откроется окно — в «Параметры» укажите тип данных, от введения которых хотите уберечь клетки.
- Вы также можете настроить уведомления, которые Excel будет выводить перед редактированием и в случае ввода некорректных данных. Это делается во вкладках «Сообщение для ввода» и «Сообщение об ошибке» соответственно.
- Затем необходимо сохранить настройки, нажав «ОК», и они вступят в силу.
Добавляем автоматические уведомления для работы с ячейками.
Ограничение от редактирования
Используя эту функцию, вы можете чётко указать конкретные клетки или группы, которые необходимо уберечь от изменения. Это можно сделать для:
- Всех элементов рабочей области — нажмите Ctrl + «A»;
- Конкретных — выберите их вручную, используя Ctrl для добавления ячейки в перечень и Shift для того, чтобы включить в него сразу несколько по горизонтали, вертикали или поперёк;
- Определённых групп элементов, например, только клетки с формулами, примечаниями или любые другие.
Ограничение всей рабочей области:
- Выделите все элементы — нажмите Ctrl + «A» или кликните на область, где пересекается нумерация строк и столбцов на рамке таблицы (пустая клетка без цифры и буквы).
- На выделенной области нажмите правой клавишей мыши, чтобы открыть контекстное меню.
- Выберите «Формат ячеек», в окне перейдите в «Защита» и активируйте пункты «Защищаемая ячейка» (установлен по умолчанию, опционально или взамен), «Скрыть формулы».
- Кликните «ОК», чтобы применить настройки.
- После этого вам необходимо активировать сохранную функцию страницы.
Выделяя всю таблицу либо её часть, ограничиваем доступ.
Ограничение прав к клеткам, выбранным вручную:
- Выделите элементы, которые предохранять не нужно, кликая по ним, удерживая Shift (для включения в перечень группы) и Ctrl (для включения конкретной, в том числе несмежной ячейки).
- На выделенной области нажмите правой клавишей мыши, чтобы открыть контекстное меню.
- Выберите «Формат ячеек», в окне перейдите в «Защита» и снимите галочку с «Защищаемая ячейка» — все остальные отмеченные элементы будут ограничены в редактировании при активации предохранения листа.
- Кликните «ОК», чтобы применить настройки.
- После этого вам необходимо активировать опцию.
Ограничение доступа к определённым группам клеток нужно в том случае, если необходимо ограничить редактирование одной или нескольких групп с конкретными свойствами содержимого:
- Укажите элементы, принадлежащие к одной или нескольким группам, которые нужно уберечь. Для этого перейдите по пути «Главная» — «Редактирование» — «Найти и выделить» — «Выделение группы ячеек».
- Укажите необходимые опции и нажмите «ОК», чтобы изменения вступили в силу.
- После этого вам нужно активировать функцию предохранения.
Пример выбора содержимого с определенными свойствами.
Как установить защиту листа в Excel
Недостаточно просто снять или установить флажки в пунктах об ограничении прав на изменение данных. Защищёнными (или наоборот, если вы сняли отметку) клетки станут после того, как будет активирована функция для всей страницы. Настройки Excel по умолчанию — активированный пункт «Защищаемая ячейка» и выключенный «Скрыть формулы», но вы можете проверить это или внести поправки, если необходимо.
Далее необходимо:
- Перейти во вкладку «Рецензирование», указать «Защитить лист» — так вы ограничите права ко всем клеткам, которые отмечены галочкой (остальные по-прежнему можно будет изменять).
- Вы также можете внести дополнительные настройки перед применением опции, чтобы указать, что именно будет сделано с отмеченными элементами.
- Подтвердите активацию ограничения доступа.
Если вы хотите оставить возможность форматирования всех элементов страницы Excel, отметьте только три первых пункта.
Excel позволяет добавить пароль при защите листа.
Ограничение разных диапазонов для разных пользователей
В случае, если над документом работает несколько человек, и каждому из них должен быть доступен только определённый участок, необходимо:
- Перейти во вкладку «Рецензирование», нажать «Разрешить изменение диапазонов».
- В новом окне создать область — ввести перечень значений и пароль для доступа к ним.
- Сделать требуемое количество произвольных областей и разрешить доступ любому количеству юзеров.
- Установить функцию, чтобы изменения вступили в силу.
При утилизации такой системы функций каждый пользователь перед тем, как редактировать определённый участок таблицы, будет вынужден ввести пароль. Если он не знает секретного кода, внести изменения не получится.
Ограничиваем либо предоставляем доступ к диапазонам ячеек.
Ограничение одного или нескольких листов от изменения и форматирования
В большинстве случаев недостаточно ограничить права к клеткам и их группам по функционалу. Целесообразно запретить редактирование всей страницы Excel либо нескольких. Для этого нужно:
- Перейти в «Рецензирование», указать «Защитить лист» в области «Изменения».
- Ввести пароль, если необходимо.
- Сохранить изменения.
С помощью указанной функции вы сможете избежать не только изменения определённых значений, но и редактирования названия, «шапки» (закреплённых строк и столбцов), форматирования и изменения размеров в окне Excel.
Как установить пароль для защиты от редактирования
Ограничения, установленные в документе Excel, может отменить любой пользователь, имеющий права (по умолчанию). Для того, чтобы лишить возможности других юзеров отключать функцию предохранения от редактирования или ввода неверных данных, можно установить пароль. Для этого:
- Укажите клетки или листы, к которым хотите ограничить доступ.
- Перейдите в «Рецензирование» и кликните «Разрешить изменение диапазонов».
- В новом окне создайте диапазон или укажите существующий.
- Укажите пароль, сохраните настройки.
После активации функции документ не сможет быть изменён человеком, не знающим кода доступа к файлу. Будьте аккуратнее, так как пароль от Excel восстановить невозможно — он будет утерян со всеми данными.
Как снять защиту
Этот алгоритм подойдёт как для возврата прав ко всему листу, так и некоторым его элементам, если они — единственные заблокированные. Для этого:
- Укажите перечень клеток, к которому требуется восстановить доступ (нажмите Ctrl + «A», чтобы выбрать все).
- Вызовите окно «Формат ячеек», кликнув правой клавишей мыши по области элементов.
- Перейдите в «Защита» и настройте пункты «Скрыть формулы» и «Защищаемая ячейка».
- Сохраните изменения.
После использования указанных функций документ Excel снова станет доступен для всех юзеров. Для того чтобы отменить защиту только на части книги, сначала сделайте это для всей, после чего выделите элементы, права к которым следует ограничить вновь.
Итог
Зная, какие сохранные возможности предлагает Excel, вы можете довольно тонко настроить ограничения доступа. Так можно предостеречь себя от случайного ввода нежелательных данных, а также редактирования книги сторонним пользователем. Вы можете запаролить клетки, а также снять предохранение от нежелательного доступа или поправок полностью или частично. Это самые простые способы ограничения прав, которые могут быть настроены в самом Excel.
Всё о работе с ячейками в Excel-VBA: обращение, перебор, удаление, вставка, скрытие, смена имени.
Содержание:
Table of Contents:
- Что такое ячейка Excel?
- Способы обращения к ячейкам
- Выбор и активация
- Получение и изменение значений ячеек
- Ячейки открытой книги
- Ячейки закрытой книги
- Перебор ячеек
- Перебор в произвольном диапазоне
- Свойства и методы ячеек
- Имя ячейки
- Адрес ячейки
- Размеры ячейки
- Запуск макроса активацией ячейки
2 нюанса:
- Я почти везде стараюсь использовать ThisWorkbook (а не, например, ActiveWorkbook) для обращения к текущей книге, в которой написан этот код (считаю это наиболее безопасным для новичков способом обращения к книгам, чтобы случайно не внести изменения в другие книги). Для экспериментов можете вставлять этот код в модули, коды книги, либо листа, и он будет работать только в пределах этой книги.
- Я использую английский эксель и у меня по стандарту листы называются Sheet1, Sheet2 и т.д. Если вы работаете в русском экселе, то замените Thisworkbook.Sheets(«Sheet1») на Thisworkbook.Sheets(«Лист1»). Если этого не сделать, то вы получите ошибку в связи с тем, что пытаетесь обратиться к несуществующему объекту. Можно также заменить на Thisworkbook.Sheets(1), но это менее безопасно.
Что такое ячейка Excel?
В большинстве мест пишут: «элемент, образованный пересечением столбца и строки». Это определение полезно для людей, которые не знакомы с понятием «таблица». Для того, чтобы понять чем на самом деле является ячейка Excel, необходимо заглянуть в объектную модель Excel. При этом определения объектов «ряд», «столбец» и «ячейка» будут отличаться в зависимости от того, как мы работаем с файлом.
Объекты в Excel-VBA. Пока мы работаем в Excel без углубления в VBA определение ячейки как «пересечения» строк и столбцов нам вполне хватает, но если мы решаем как-то автоматизировать процесс в VBA, то о нём лучше забыть и просто воспринимать лист как «мешок» ячеек, с каждой из которых VBA позволяет работать как минимум тремя способами:
- по цифровым координатам (ряд, столбец),
- по адресам формата А1, B2 и т.д. (сценарий целесообразности данного способа обращения в VBA мне сложно представить)
- по уникальному имени (во втором и третьем вариантах мы будем иметь дело не совсем с ячейкой, а с объектом VBA range, который может состоять из одной или нескольких ячеек). Функции и методы объектов Cells и Range отличаются. Новичкам я бы порекомендовал работать с ячейками VBA только с помощью Cells и по их цифровым координатам и использовать Range только по необходимости.
Все три способа обращения описаны далее
Как это хранится на диске и как с этим работать вне Excel? С точки зрения хранения и обработки вне Excel и VBA. Сделать это можно, например, сменив расширение файла с .xls(x) на .zip и открыв этот архив.
Пример содержимого файла Excel:
Далее xl -> worksheets и мы видим файл листа
Содержимое файла:
То же, но более наглядно:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{00000000-0001-0000-0000-000000000000}">
<dimension ref="B2:F6"/>
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0">
<selection activeCell="D12" sqref="D12"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight="14.4" x14ac:dyDescent="0.3"/>
<sheetData>
<row r="2" spans="2:6" x14ac:dyDescent="0.3">
<c r="B2" t="s">
<v>0</v>
</c>
</row>
<row r="3" spans="2:6" x14ac:dyDescent="0.3">
<c r="C3" t="s">
<v>1</v>
</c>
</row>
<row r="4" spans="2:6" x14ac:dyDescent="0.3">
<c r="D4" t="s">
<v>2</v>
</c>
</row>
<row r="5" spans="2:6" x14ac:dyDescent="0.3">
<c r="E5" t="s">
<v>0</v></c>
</row>
<row r="6" spans="2:6" x14ac:dyDescent="0.3">
<c r="F6" t="s"><v>3</v>
</c></row>
</sheetData>
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
</worksheet>
Как мы видим, в структуре объектной модели нет никаких «пересечений». Строго говоря рабочая книга — это архив структурированных данных в формате XML. При этом в каждую «строку» входит «столбец», и в нём в свою очередь прописан номер значения данного столбца, по которому оно подтягивается из другого XML файла при открытии книги для экономии места за счёт отсутствия повторяющихся значений. Почему это важно. Если мы захотим написать какой-то обработчик таких файлов, который будет напрямую редактировать данные в этих XML, то ориентироваться надо на такую модель и структуру данных. И правильное определение будет примерно таким: ячейка — это объект внутри столбца, который в свою очередь находится внутри строки в файле xml, в котором хранятся данные о содержимом листа.
Способы обращения к ячейкам
Выбор и активация
Почти во всех случаях можно и стоит избегать использования методов Select и Activate. На это есть две причины:
- Это лишь имитация действий пользователя, которая замедляет выполнение программы. Работать с объектами книги можно напрямую без использования методов Select и Activate.
- Это усложняет код и может приводить к неожиданным последствиям. Каждый раз перед использованием Select необходимо помнить, какие ещё объекты были выбраны до этого и не забывать при необходимости снимать выбор. Либо, например, в случае использования метода Select в самом начале программы может быть выбрано два листа вместо одного потому что пользователь запустил программу, выбрав другой лист.
Можно выбирать и активировать книги, листы, ячейки, фигуры, диаграммы, срезы, таблицы и т.д.
Отменить выбор ячеек можно методом Unselect:
Selection.Unselect
Отличие выбора от активации — активировать можно только один объект из раннее выбранных. Выбрать можно несколько объектов.
Если вы записали и редактируете код макроса, то лучше всего заменить Select и Activate на конструкцию With … End With. Например, предположим, что мы записали вот такой макрос:
Sub Macro1()
' Macro1 Macro
Range("F4:F10,H6:H10").Select 'выбрали два несмежных диапазона зажав ctrl
Range("H6").Activate 'показывает только то, что я начал выбирать второй диапазон с этой ячейки (она осталась белой). Это действие ни на что не влияет
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535 'залили желтым цветом, нажав на кнопку заливки на верхней панели
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Почему макрос записался таким неэффективным образом? Потому что в каждый момент времени (в каждой строке) программа не знает, что вы будете делать дальше. Поэтому в записи выбор ячеек и действия с ними — это два отдельных действия. Этот код лучше всего оптимизировать (особенно если вы хотите скопировать его внутрь какого-нибудь цикла, который должен будет исполняться много раз и перебирать много объектов). Например, так:
Sub Macro11()
'
' Macro1 Macro
Range("F4:F10,H6:H10").Select '1. смотрим, что за объект выбран (что идёт до .Select)
Range("H6").Activate
With Selection.Interior '2. понимаем, что у выбранного объекта есть свойство interior, с которым далее идёт работа
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Sub Optimized_Macro()
With Range("F4:F10,H6:H10").Interior '3. переносим объект напрямую в конструкцию With вместо Selection
' ////// Здесь я для надёжности прописал бы ещё Thisworkbook.Sheet("ИмяЛиста") перед Range,
' ////// чтобы минимизировать риск любых случайных изменений других листов и книг
' ////// With Thisworkbook.Sheet("ИмяЛиста").Range("F4:F10,H6:H10").Interior
.Pattern = xlSolid '4. полностью копируем всё, что было записано рекордером внутрь блока with
.PatternColorIndex = xlAutomatic
.Color = 55555 '5. здесь я поменял цвет на зеленый, чтобы было видно, работает ли код при поочерёдном запуске двух макросов
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Пример сценария, когда использование Select и Activate оправдано:
Допустим, мы хотим, чтобы во время исполнения программы мы одновременно изменяли несколько листов одним действием и пользователь видел какой-то определённый лист. Это можно сделать примерно так:
Sub Select_Activate_is_OK()
Thisworkbook.Worksheets(Array("Sheet1", "Sheet3")).Select 'Выбираем несколько листов по именам
Thisworkbook.Worksheets("Sheet3").Activate 'Показываем пользователю третий лист
'Далее все действия с выбранными ячейками через Select будут одновременно вносить изменения в оба выбранных листа
'Допустим, что тут мы решили покрасить те же два диапазона:
Range("F4:F10,H6:H10").Select
Range("H6").Activate
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Единственной причиной использовать этот код по моему мнению может быть желание зачем-то показать пользователю определённую страницу книги в какой-то момент исполнения программы. С точки зрения обработки объектов, опять же, эти действия лишние.
Получение и изменение значений ячеек
Значение ячеек можно получать/изменять с помощью свойства value.
'Если нужно прочитать / записать значение ячейки, то используется свойство Value
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value 'записать значение ячейки А1 листа "Sheet1" в переменную "a"
ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value = 1 'задать значение ячейки А1 (первый ряд, первый столбец) листа "Sheet1"
'Если нужно прочитать текст как есть (с форматированием), то можно использовать свойство .text:
ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text = "1"
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text
'Когда проявится разница:
'Например, если мы считываем дату в формате "31 декабря 2021 г.", хранящуюся как дата
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value 'эапишет как "31.12.2021"
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text 'запишет как "31 декабря 2021 г."
Ячейки открытой книги
К ячейкам можно обращаться:
'В книге, в которой хранится макрос (на каком-то из листов, либо в отдельном модуле или форме)
ThisWorkbook.Sheets("Sheet1").Cells(1,1).Value 'По номерам строки и столбца
ThisWorkbook.Sheets("Sheet1").Cells(1,"A").Value 'По номерам строки и букве столбца
ThisWorkbook.Sheets("Sheet1").Range("A1").Value 'По адресу - вариант 1
ThisWorkbook.Sheets("Sheet1").[A1].Value 'По адресу - вариант 2
ThisWorkbook.Sheets("Sheet1").Range("CellName").Value 'По имени ячейки (для этого ей предварительно нужно его присвоить)
'Те же действия, но с использованием полного названия рабочей книги (книга должна быть открыта)
Workbooks("workbook.xlsm").Sheets("Sheet1").Cells(1,1).Value 'По номерам строки и столбца
Workbooks("workbook.xlsm").Sheets("Sheet1").Cells(1,"A").Value 'По номерам строки и букве столбца
Workbooks("workbook.xlsm").Sheets("Sheet1").Range("A1").Value 'По адресу - вариант 1
Workbooks("workbook.xlsm").Sheets("Sheet1").[A1].Value 'По адресу - вариант 2
Workbooks("workbook.xlsm").Sheets("Sheet1").Range("CellName").Value 'По имени ячейки (для этого ей предварительно нужно его присвоить)
Ячейки закрытой книги
Если нужно достать или изменить данные в другой закрытой книге, то необходимо прописать открытие и закрытие книги. Непосредственно работать с закрытой книгой не получится, потому что данные в ней хранятся отдельно от структуры и при открытии Excel каждый раз производит расстановку значений по соответствующим «слотам» в структуре. Подробнее о том, как хранятся данные в xlsx см выше.
Workbooks.Open Filename:="С:closed_workbook.xlsx" 'открыть книгу (она становится активной)
a = ActiveWorkbook.Sheets("Sheet1").Cells(1,1).Value 'достать значение ячейки 1,1
ActiveWorkbook.Close False 'закрыть книгу (False => без сохранения)
Скачать пример, в котором можно посмотреть, как доставать и как записывать значения в закрытую книгу.
Код из файла:
Option Explicit
Sub get_value_from_closed_wb() 'достать значение из закрытой книги
Dim a, wb_path, wsh As String
wb_path = ThisWorkbook.Sheets("Sheet1").Cells(2, 3).Value 'get path to workbook from sheet1
wsh = ThisWorkbook.Sheets("Sheet1").Cells(3, 3).Value
Workbooks.Open Filename:=wb_path
a = ActiveWorkbook.Sheets(wsh).Cells(3, 3).Value
ActiveWorkbook.Close False
ThisWorkbook.Sheets("Sheet1").Cells(4, 3).Value = a
End Sub
Sub record_value_to_closed_wb() 'записать значение в закрытую книгу
Dim wb_path, b, wsh As String
wsh = ThisWorkbook.Sheets("Sheet1").Cells(3, 3).Value
wb_path = ThisWorkbook.Sheets("Sheet1").Cells(2, 3).Value 'get path to workbook from sheet1
b = ThisWorkbook.Sheets("Sheet1").Cells(5, 3).Value 'get value to record in the target workbook
Workbooks.Open Filename:=wb_path
ActiveWorkbook.Sheets(wsh).Cells(4, 4).Value = b 'add new value to cell D4 of the target workbook
ActiveWorkbook.Close True
End Sub
Перебор ячеек
Перебор в произвольном диапазоне
Скачать файл со всеми примерами
Пройтись по всем ячейкам в нужном диапазоне можно разными способами. Основные:
- Цикл For Each. Пример:
Sub iterate_over_cells() For Each c In ThisWorkbook.Sheets("Sheet1").Range("B2:D4").Cells MsgBox (c) Next c End Sub
Этот цикл выведет в виде сообщений значения ячеек в диапазоне B2:D4 по порядку по строкам слева направо и по столбцам — сверху вниз. Данный способ можно использовать для действий, в который вам не важны номера ячеек (закрашивание, изменение форматирования, пересчёт чего-то и т.д.).
- Ту же задачу можно решить с помощью двух вложенных циклов — внешний будет перебирать ряды, а вложенный — ячейки в рядах. Этот способ я использую чаще всего, потому что он позволяет получить больше контроля над исполнением: на каждой итерации цикла нам доступны координаты ячеек. Для перебора всех ячеек на листе этим методом потребуется найти последнюю заполненную ячейку. Пример кода:
Sub iterate_over_cells() Dim cl, rw As Integer Dim x As Variant 'перебор области 3x3 For rw = 1 To 3 ' цикл для перебора рядов 1-3 For cl = 1 To 3 'цикл для перебора столбцов 1-3 x = ThisWorkbook.Sheets("Sheet1").Cells(rw + 1, cl + 1).Value MsgBox (x) Next cl Next rw 'перебор всех ячеек на листе. Последняя ячейка определена с помощью UsedRange 'LastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 'LastCol = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1 'For rw = 1 To LastRow 'цикл перебора всех рядов ' For cl = 1 To LastCol 'цикл для перебора всех столбцов ' Действия ' Next cl 'Next rw End Sub
- Если нужно перебрать все ячейки в выделенном диапазоне на активном листе, то код будет выглядеть так:
Sub iterate_cell_by_cell_over_selection() Dim ActSheet As Worksheet Dim SelRange As Range Dim cell As Range Set ActSheet = ActiveSheet Set SelRange = Selection 'if we want to do it in every cell of the selected range For Each cell In Selection MsgBox (cell.Value) Next cell End Sub
Данный метод подходит для интерактивных макросов, которые выполняют действия над выбранными пользователем областями.
- Перебор ячеек в ряду
Sub iterate_cells_in_row() Dim i, RowNum, StartCell As Long RowNum = 3 'какой ряд StartCell = 0 ' номер начальной ячейки (минус 1, т.к. в цикле мы прибавляем i) For i = 1 To 10 ' 10 ячеек в выбранном ряду ThisWorkbook.Sheets("Sheet1").Cells(RowNum, i + StartCell).Value = i '(i + StartCell) добавляет 1 к номеру столбца при каждом повторении Next i End Sub
- Перебор ячеек в столбце
Sub iterate_cells_in_column() Dim i, ColNum, StartCell As Long ColNum = 3 'какой столбец StartCell = 0 ' номер начальной ячейки (минус 1, т.к. в цикле мы прибавляем i) For i = 1 To 10 ' 10 ячеек ThisWorkbook.Sheets("Sheet1").Cells(i + StartCell, ColNum).Value = i ' (i + StartCell) добавляет 1 к номеру ряда при каждом повторении Next i End Sub
Свойства и методы ячеек
Имя ячейки
Присвоить новое имя можно так:
Thisworkbook.Sheets(1).Cells(1,1).name = "Новое_Имя"
Для того, чтобы сменить имя ячейки нужно сначала удалить существующее имя, а затем присвоить новое. Удалить имя можно так:
ActiveWorkbook.Names("Старое_Имя").Delete
Пример кода для переименования ячеек:
Sub rename_cell()
old_name = "Cell_Old_Name"
new_name = "Cell_New_Name"
ActiveWorkbook.Names(old_name).Delete
ThisWorkbook.Sheets(1).Cells(2, 1).Name = new_name
End Sub
Sub rename_cell_reverse()
old_name = "Cell_New_Name"
new_name = "Cell_Old_Name"
ActiveWorkbook.Names(old_name).Delete
ThisWorkbook.Sheets(1).Cells(2, 1).Name = new_name
End Sub
Адрес ячейки
Sub get_cell_address() ' вывести адрес ячейки в формате буква столбца, номер ряда
'$A$1 style
txt_address = ThisWorkbook.Sheets(1).Cells(3, 2).Address
MsgBox (txt_address)
End Sub
Sub get_cell_address_R1C1()' получить адрес столбца в формате номер ряда, номер столбца
'R1C1 style
txt_address = ThisWorkbook.Sheets(1).Cells(3, 2).Address(ReferenceStyle:=xlR1C1)
MsgBox (txt_address)
End Sub
'пример функции, которая принимает 2 аргумента: название именованного диапазона и тип желаемого адреса
'(1- тип $A$1 2- R1C1 - номер ряда, столбца)
Function get_cell_address_by_name(str As String, address_type As Integer)
'$A$1 style
Select Case address_type
Case 1
txt_address = Range(str).Address
Case 2
txt_address = Range(str).Address(ReferenceStyle:=xlR1C1)
Case Else
txt_address = "Wrong address type selected. 1,2 available"
End Select
get_cell_address_by_name = txt_address
End Function
'перед запуском нужно убедиться, что в книге есть диапазон с названием,
'адрес которого мы хотим получить, иначе будет ошибка
Sub test_function() 'запустите эту программу, чтобы увидеть, как работает функция
x = get_cell_address_by_name("MyValue", 2)
MsgBox (x)
End Sub
Размеры ячейки
Ширина и длина ячейки в VBA меняется, например, так:
Sub change_size()
Dim x, y As Integer
Dim w, h As Double
'получить координаты целевой ячейки
x = ThisWorkbook.Sheets("Sheet1").Cells(2, 2).Value
y = ThisWorkbook.Sheets("Sheet1").Cells(3, 2).Value
'получить желаемую ширину и высоту ячейки
w = ThisWorkbook.Sheets("Sheet1").Cells(6, 2).Value
h = ThisWorkbook.Sheets("Sheet1").Cells(7, 2).Value
'сменить высоту и ширину ячейки с координатами x,y
ThisWorkbook.Sheets("Sheet1").Cells(x, y).RowHeight = h
ThisWorkbook.Sheets("Sheet1").Cells(x, y).ColumnWidth = w
End Sub
Прочитать значения ширины и высоты ячеек можно двумя способами (однако результаты будут в разных единицах измерения). Если написать просто Cells(x,y).Width или Cells(x,y).Height, то будет получен результат в pt (привязка к размеру шрифта).
Sub get_size()
Dim x, y As Integer
'получить координаты ячейки, с которой мы будем работать
x = ThisWorkbook.Sheets("Sheet1").Cells(2, 2).Value
y = ThisWorkbook.Sheets("Sheet1").Cells(3, 2).Value
'получить длину и ширину выбранной ячейки в тех же единицах измерения, в которых мы их задавали
ThisWorkbook.Sheets("Sheet1").Cells(2, 6).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).ColumnWidth
ThisWorkbook.Sheets("Sheet1").Cells(3, 6).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).RowHeight
'получить длину и ширину с помощью свойств ячейки (только для чтения) в поинтах (pt)
ThisWorkbook.Sheets("Sheet1").Cells(7, 9).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).Width
ThisWorkbook.Sheets("Sheet1").Cells(8, 9).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).Height
End Sub
Скачать файл с примерами изменения и чтения размера ячеек
Запуск макроса активацией ячейки
Для запуска кода VBA при активации ячейки необходимо вставить в код листа нечто подобное:
3 важных момента, чтобы это работало:
1. Этот код должен быть вставлен в код листа (здесь контролируется диапазон D4)
2-3. Программа, ответственная за запуск кода при выборе ячейки, должна называться Worksheet_SelectionChange и должна принимать значение переменной Target, относящейся к триггеру SelectionChange. Другие доступные триггеры можно посмотреть в правом верхнем углу (2).
Скачать файл с базовым примером (как на картинке)
Скачать файл с расширенным примером (код ниже)
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' имеем в виду, что триггер SelectionChange будет запускать эту Sub после каждого клика мышью (после каждого клика будет проверяться:
'1. количество выделенных ячеек и
'2. не пересекается ли выбранный диапазон с заданным в этой программе диапазоном.
' поэтому в эту программу не стоит без необходимости писать никаких других тяжелых операций
If Selection.Count = 1 Then 'запускаем программу только если выбрано не более 1 ячейки
'вариант модификации - брать адрес ячейки из другой ячейки:
'Dim CellName as String
'CellName = Activesheet.Cells(1,1).value 'брать текстовое имя контролируемой ячейки из A1 (должно быть в формате Буква столбца + номер строки)
'If Not Intersect(Range(CellName), Target) Is Nothing Then
'для работы этой модификации следующую строку надо закомментировать/удалить
If Not Intersect(Range("D4"), Target) Is Nothing Then
'если заданный (D4) и выбранный диапазон пересекаются
'(пересечение диапазонов НЕ равно Nothing)
'можно прописать диапазон из нескольких ячеек:
'If Not Intersect(Range("D4:E10"), Target) Is Nothing Then
'можно прописать несколько диапазонов:
'If Not Intersect(Range("D4:E10"), Target) Is Nothing or Not Intersect(Range("A4:A10"), Target) Is Nothing Then
Call program 'выполняем программу
End If
End If
End Sub
Sub program()
MsgBox ("Program Is running") 'здесь пишем код того, что произойдёт при выборе нужной ячейки
End Sub
Некоторые таблицы Microsoft Excel стоит защитить от посторонних глаз, например, это пригодится для документов с данными о бюджете. В таблицах, которыми управляют несколько человек, есть риск случайной потери данных, а чтобы такого не произошло, можно воспользоваться встроенной защитой. Разберем все возможности блокировки доступа к документам.
Содержание
- Установка пароля на листы и книги
- Установка пароля на отдельные ячейки
- Установка пароля на структуру книги
- Как снять пароль в документе Excel
- Заключение
Установка пароля на листы и книги
Защитить документ целиком или его части – листы – можно несколькими способами. Рассмотрим каждый из них пошагово. Если нужно сделать так, чтобы запрос пароля появлялся при открытии документа, следует установить код при сохранении файла.
- Откроем вкладку меню «Файл» и найдем раздел «Сохранить как». В нем есть опция «Обзор», она и потребуется для установки пароля. В более старых версиях при нажатии на «Сохранить как» сразу открывается окно обзора.
- Когда окно сохранения появится на экране, необходимо найти раздел «Сервис» в нижней части. Откроем его и выберем опцию «Общие параметры».
- Окно общих параметров позволяет ограничить доступ к документу. Можно задать два пароля – для просмотра файла и для изменения его содержимого. Доступ «Только для чтения» устанавливается как предпочтительный через это же окно. Заполним поля ввода паролей и нажмем кнопку «ОК», чтобы сохранить изменения.
- Далее придется подтвердить пароли – еще раз ввести их в соответствующую форму по очереди. После нажатия кнопки «ОК» в последнем окне документ будет защищен.
- Остается только сохранить файл, после установки паролей программа возвращает пользователя к окну сохранения.
При следующем открытии книги Excel появится окно ввода пароля. Если заданы два кода – для просмотра и изменения – вход происходит в два этапа. Вводить второй пароль не обязательно, если нужно только прочитать документ.
Другой способ защитить документ – воспользоваться функциями раздела «Сведения».
- Откроем вкладку «Файл» и найдем в нем раздел «Сведения». Одна из опций раздела – «Разрешения».
- Меню разрешений открывается нажатием на кнопку «Защитить книгу». Необходим второй пункт списка – «Зашифровать паролем». Выберем его, чтобы установить код доступа.
- В окошке шифрования вводим новый пароль. Далее необходимо будет подтвердить его в таком же окне. В конце нажимаем кнопку «ОК».
Обратите внимание! Понять, что опция включена, можно по оранжевой рамке, которая окружает раздел «Разрешения».
Установка пароля на отдельные ячейки
Если нужно защитить некоторые ячейки от изменения или удаления информации, поможет шифрование паролем. Установим защиту с помощью функции «Защитить лист». Она действует на весь лист по умолчанию, но после небольших изменений в настройках будет ориентироваться только на нужный диапазон ячеек.
- Выделяем лист и кликаем по нему правой кнопкой мыши. Появится меню, в котором необходимо найти функцию «Формат ячеек» и выбрать ее. Откроется окно настроек.
- Выбираем вкладку «Защита» в открывшемся окне, там находится два окна для галочек. Нужно снять выбор с верхнего окна – «Защищаемая ячейка». На данный момент ячейка не защищена, но ее нельзя было бы изменить после установки пароля. Далее нажимаем «ОК».
- Выделяем ячейки, которые нужно защитить, и проводим обратное действие. Необходимо снова открыть «Формат ячеек» и поставить галочку в окне «Защищаемая ячейка».
- Во вкладке «Рецензирование» находится кнопка «Защитить лист» – кликнем по ней. Откроется окно со строкой для пароля и списком разрешений. Выбираем подходящие разрешения – возле них нужно поставить галочки. Далее требуется придумать пароль для отключения защиты. Когда все сделано, нажимаем «ОК».
При попытке изменить содержимое ячейки пользователь увидит предупреждение о защите и инструкцию по снятию защиты. Те, у кого нет пароля, не смогут внести изменения.
Внимание! Найти функцию «Защитить лист» можно также во вкладке «Файл». Необходимо зайти в раздел сведения и найти кнопку «Разрешения» с ключом и замком.
Установка пароля на структуру книги
Если установлена защита структуры, появляется несколько ограничений работы с документом. С книгой нельзя будет выполнить данные действия:
- копировать, переименовывать, удалять листы внутри книги;
- создавать листы;
- открывать скрытые листы;
- копировать или перемещать листы в другие книги.
Чтобы заблокировать изменение структуры, выполним несколько шагов.
- Откроем вкладку «Рецензирование» и найдем опцию «Защитить книгу». Эту опцию также можно найти во вкладке «Файл» – раздел «Сведения», функция «Разрешение».
- Откроется окно с выбором варианта защиты и полем для ввода пароля. Ставим галочку возле слова «Структуру» и придумываем пароль. После этого нужно нажать кнопку «ОК».
- Подтверждаем пароль, и структура книги становится защищенной.
Как снять пароль в документе Excel
Отменить защиту документа, ячеек или книги можно там же, где она была установлена. Например, чтобы снять пароль с документа и отменить ограничение изменений, откроем окно сохранения или шифровки и очистим строки с заданными паролями. Для снятия паролей с листов и книги нужно открыть вкладку «Рецензирование» и кликнуть по соответствующим кнопкам. Появятся окна под названием «Снять защиту», где требуется ввести пароль. Если код правильный, защита спадет, и откроются действия с ячейками и листами.
Важно! Если пароль утерян, восстановить его не получится. Программа всегда предупреждает об этом при установке кодов. В таком случае помогут сторонние сервисы, но их использование не всегда безопасно.
Заключение
Встроенная защита документа Excel от редактирования достаточно надежная – восстановить пароль нельзя, он передается доверенным людям или остается у создателя таблицы. Удобство защитных функций в том, что пользователь может ограничить доступ не только к целой таблице, но и к отдельным ячейкам или к редактированию структуры книги.
Оцените качество статьи. Нам важно ваше мнение: