0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как автоматически защитить определенный рабочий лист в Excel?

Ограничить доступ к просмотру листа Excel

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

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

Я попробовал следующее, но он не запрашивает пароль для доступа к листу

Правильно ли я все делаю?

3 ответа

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

Во-первых, я бы рекомендовал создать общую целевую страницу. Главная вкладка, которая появляется при открытии книги. Мы воспользуемся событием Workbook_Open() и активируем лист оттуда.

Если хотите, это может быть скрытый лист, решать Вам.

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

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

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

Предотвращение изменений типа файла во время SaveAs 1

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

Читайте так же:
Как всегда показывать стрелку списка проверки данных в Excel?

Сначала мы должны определить, что это — Save или SaveAs. Это можно сделать с помощью логического свойства SaveAsUI, которое включено в само событие. Если оно равно True, то это событие SaveAs, поэтому мы должны выполнить дополнительную проверку, чтобы убедиться, что тип файла не был случайно изменен в диалоговом окне сохранения. Если это простое сохранение, то оно равно False, и поскольку рабочая книга будет сохранена как файл Excel .xlsm, мы можем проигнорировать эти проверки.

В результате первоначальной проверки мы отобразим диалоговое окно с помощью Application. FileDialog(). Показать

Далее мы проверим, отменил ли пользователь операцию.SelectedItems.Count = 0 или нажал кнопку Save . Если пользователь нажмет кнопку Cancel, мы просто установим Cancel = True, и книга не будет сохранена.

Теперь мы проверим тип расширения, выбранный пользователем, используя следующую строку:

При этом путь к файлу будет разделен точкой. и захвачен последний экземпляр точки (UBound(Split(fileName, «.»)) в случае, если имя файла может содержать лишние точки. Операция сохранения будет остановлена, если расширение не xlsm.

Наконец, можно сохранить документ после завершения всех проверок:

Мы можем установить значение Cancel в True и выйти из процедуры, поскольку мы уже сохранили ее с помощью вышеприведенной строки.

Полный код (для размещения в модуле obj рабочей таблицы) :

1 Привет PatricK за предложение

Я согласен с Матье Гиндоном, что любая попытка VBA «Ограничить доступ к представлению в листе Excel» будет ненадежной, как объяснил Матье Гиндон. Более того, если вы откроете файл с любым, кроме самого низкого уровня безопасности макроса параметров Excel, любой код VBA, включая этот, приведет к ошибке.

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

Если вы хотите ограничить доступ к листу, можно просто сохранить его:

эксэл лаба

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

Sub Список листов() Dim Лист как объект

For Each Sheet In ActiveWorkbook . Sheets

Читайте так же:
Как вставить дату последнего изменения в верхний или нижний колонтитул Excel?

Активная клетка . Формула = Лист. Имя активной ячейки . Смещение (1, 0) . Выберите

Однако его можно использовать, как и другие циклические структуры (см., например, макрос на стр. 89).

Структура с . End With структура для управления объектами. В Excel в качестве параметра .

У данного объекта может быть несколько методов и свойств. Методы и свойства объекта можно найти с помощью браузера объектов, который в редакторе VBA вызывается из пункта меню View.

Свойства объекта описывают его содержимое или другие атрибуты. Существует множество объектов со свойством Name, а объекты со свойством Font имеют такие свойства, как шрифт, размер, цвет и т.д.

Метод — это определенная процедура, которая выполняет некоторые операции над объектом. Close, например, объекта Workbook закрывает рабочую книгу:

Многие методы имеют аргументы. Аргумент — это тип данных, по которым метод определяет, как он должен работать. Например, можно сохранить книгу с новым именем и паролем с помощью метода SaveAs. Чтобы метод сработал, вы должны определить новое имя файла и пароль с помощью аргументов метода:

ActiveWorkbook . SaveAs FileName: = «МояКнига», Password: = «СезамОткройся»

Этот макрос использует структуру дважды. Основной цикл описывает методы и свойства объекта ActiveCell, а внутренний цикл описывает свойства объекта Font, связанные с этим объектом.

Sub Ячейка () With ActiveCell

. Метод ClearContents — очищает содержимое выделенной ячейки.

. Name = «Bookman Old Style» ‘

Свойства — определяется имя источника,

Ее размер и контур

. BorderAround LineStyle: = x1Double ‘ двойная рамка вокруг ячейки

. HorizontalAlignment = x1HAlignCenter ‘ выравнивание результата по центру ячейки

End With End Sub

Для объединения этих свойств в макропрограммах чаще всего используются структуры with.

Дополнительную информацию об операторах, функциях, расширении функций VBA с помощью Windows API, создании полноценных программ Excel, объединяющих функции оформления электронных таблиц, использовании элементов управления ActiveX в электронных таблицах и формах и других темах можно найти в справочниках по VBA в рекомендованной литературе.

21. Создание приложений в VBA

Язык VBA делает MS Office не только отличным пакетом приложений, но и прекрасной платформой для разработки приложений. Среда VBA позволяет программисту разрабатывать программу графически, размещая элементы управления (например, текстовые поля, выпадающие списки, кнопки, переключатели, полосы прокрутки и т.д.) на форме, а затем писать относительно простой программный код для «оживления» формы. Возможности разработки форм включают не только соответствующий набор инструментов для создания диалоговых окон, но и полноценную модель для программирования событий и поддержку элементов управления ActiveX — инструментов, расширяющих возможности среды разработки VBA. В VBA выполнение программного кода контролируется событиями, которые происходят во время выполнения программы. Щелчок мышью, открытие или закрытие формы, нажатие определенной комбинации клавиш — каждое из этих событий посылает программе сообщение, которое запускает определенную, заранее написанную процедуру. Таким образом, контроль над приложением передается пользователю. Редактор VBA со встроенными инструментами для отладки и управления проектами значительно повышает эффективность разработки программ.

Читайте так же:
Изменение шрифта / размера заголовков строк и столбцов в Excel

Использование редактора VBA. В MS Office редактор используется всеми программами пакета, а не только Excel. Редактор VBA идентичен среде редактирования в Visual C++, Delphi, Visual J++ и т.д. Он часто используется для ввода, просмотра и редактирования программного кода или макросов. Из Excel редактор запускается нажатием Alt+F11 или командой

Де Макросы Макросы Редактор Visual Basic из меню Сервис. Главное окно редактора VBA после открытия показано на рис. 50. Возможно, что вид окна после его открытия может отличаться от показанного, так как не все окна главного окна видны. В этом случае их можно отобразить из пункта меню Вид с помощью следующих команд:

Project Explorer — активировать окно проекта. Окно свойств — активировать окно свойств.

Панель инструментов — для отображения панели инструментов с элементами управления (при открытом окне формы). Эта панель инструментов также появляется одновременно с окном формы.

Окно проекта . В окне Project отображается содержимое открытых проектов VBA. Его можно использовать для быстрого доступа к необходимым программным модулям и процедурам, а также для копирования и перемещения модулей из одного проекта в другой или для удаления модулей из проекта. Это окно очень похоже на Проводник Windows. Окно Проекты позволяет работать с любым открытым в данный момент проектом. Помните, что в Excel проекты хранятся в рабочих книгах, поэтому в окне отображаются проекты в каждой рабочей книге. Каждый проект в окне представлен папками, содержащими различные типы объектов. Объектами являются рабочие листы

Контрольная панель

Рис. 50. Окна редактора VBA

Открытая рабочая книга, сама рабочая книга Excel, модули, формы и т.д. Для рабочих книг и рабочих листов модуль создается автоматически. Эти модули обычно используются при написании кода событий для каждого рабочего листа. Модуль создает…

Читайте так же:
Как быстро суммировать данные каждого столбца в Excel?

Для того чтобы написать макрос в рабочей книге, вам потребуется первый раз. VBA оснащен встроенными средствами проектирования форм, которые позволяют создавать пользовательские диалоговые окна (формы) для представления данных пользователям и получения данных от пользователей. В дополнение к коду обработки событий для каждой формы существует модуль VBA. В рабочей книге может быть несколько модулей. Модули можно копировать и перемещать так же, как и папки в окне Проводника. Удалить модуль можно, выбрав удаляемый модуль и выполнив команду Delete_module name из пункта меню File. Чтобы переименовать проект, выделите его и выберите команду Properties_project_name из меню Tools. Нажав на кнопку OK, переименуйте проект в появившемся диалоговом окне.

Он состоит из окна формы и панели управления. Форма — это окно будущего.

Приложения. Выполните команду UserForm из меню Insert, чтобы отобразить окно формы. В окне Объект при создании нового проекта VBA создает пустую форму с названием UserForm1. Во время разработки приложения вы используете эту форму для рисования различных частей приложения, таких как окна, списки, кнопки, радиокнопки, полосы прокрутки и т.д. Перетаскивая инструменты с панели инструментов, можно создавать элементы управления. Проектирование формы включает в себя изменение размера, положения, цвета и других характеристик объектов. Объекты неактивны, код не выполняется (он все равно должен быть написан). Например, если вы поместите на форму объект «полоса прокрутки», вы можете изменять его размер и положение, но прокручивать с его помощью ничего нельзя.

Окно свойств объекта. Окно свойств используется для просмотра и изменения свойств на этапе разработки. В левой колонке окна перечислены имена существующих свойств, а в правой — их значения. Каждое свойство имеет определенный тип: текстовое значение, числовое значение, логическое значение и т.д. Некоторые свойства ограничены определенными значениями. Например, объект со свойством Visible имеет только два параметра: булево значение True (объект виден) и False (объект невидим). Другие свойства могут иметь неограниченное количество параметров. Например, имя окна формы. Важно отметить

Следует отметить, что название объекта и его имя — это не одно и то же. Если вы из-

Читайте так же:
Как вставить данные в альтернативные пустые строки в Excel?

Изменил имя, имя не меняется автоматически и наоборот. Имя используется в программном коде как идентификатор объекта для ссылки на этот объект, имя отображается на объекте и видно на экране. На рисунке 49 имя формы (первая строка) — UserForm1, а имя формы (пятая строка) — Clock (отображается в строке имени формы). Аналогично, первая строка имеет имя btnStart , которое используется в имени процедуры Sub btnStart_Click(), если выбрана кнопка запуска часов, а сама кнопка отображает название кнопки — Show Current Time . Хотя многие свойства могут быть изменены как во время проектирования, так и во время выполнения, окно свойств активно только во время проектирования.

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

В списке под списком объектов находится таблица с текущими параметрами выбранного объекта. Изменить их значения очень просто: достаточно щелкнуть по значению в правом столбце, ввести новое значение или выбрать вариант из списка, который появляется при щелчке в конце строки существующих значений свойств.

На рисунке 50 описанные элементы окна редактора VBA были использованы для подготовки программной формы (пользовательского интерфейса) под названием Clock — все элементы находятся на своих местах и имеют имена. В этом режиме программа может быть «запущена». Это можно сделать из пункта меню Run команды Start или нажав одноименную кнопку инструмента на панели инструментов. Это приведет к исчезновению всех окон и появлению окна часов на листе Excel. Вы можете перемещать его по экрану, нажимать на кнопки и видеть, что они «живые» и реагируют на нажатия, хотя ничего не происходит, потому что для них еще не написан программный код.

Используйте окно программы и скомпилируйте код. При программировании

При использовании VBA большая часть работы выполняется в окне программы. Здесь отображается код программы для просмотра, редактирования и печати. Чтобы вызвать окно программы, дважды щелкните форму приложения или любой из ее объектов. На рисунке 51 показано окно с программным кодом для часов. 50.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector