Как правильно сохранить и применять пользовательскую функцию Excel
Сегодня мы продолжим изучение пользовательских функций Excel. Поскольку вы уже знаете, как их создавать (и, я надеюсь, вы также пробовали применять их), давайте копнем немного глубже и узнаем, как использовать и хранить определяемые пользователем функции в Excel.
Мы покажем вам, как легко сохранить ваши функции в файле надстройки Excel, чтобы использовать их позже буквально несколькими нажатиями мышки.
Защита книги Excel от копирования и печати
- Если рабочих файлов много, а функция нужна везде, то и копировать код придется в каждую книгу.
- Нужно не забыть сохранить рабочую книгу в формате с поддержкой макросов (xlsm или xlsb).
- При открытии такого файла защита от макросов будет каждый раз показывать предупреждение, которое нужно подтвердить. Многие пользователи пугаются, видя предупреждение на жёлтой полосе, которое просит их включить макросы. Чтобы не видеть это сообщение, вам нужно отключить защиту Excel полностью. Это может быть не всегда правильно и безопасно.
Мы рассмотрели способы создания, отладки пользовательской функции и как ее можно применять в вашей рабочей книге. Надеюсь, эти рекомендации будут вам полезны. Если у вас есть вопросы, пишите в комментариях к этой статье.
Защита книги Excel от копирования и печати
Отключение в рабочей книге команды Сохранить
Можно сделать так, чтобы рабочую книгу нельзя было сохранить, и она открывалась в режиме «только для чтения». Для этого в вашей книге выполните команду Сохранить как и в окне Сохранение документа кликните на стрелку вниз на кнопке Сервис (рис. 1). Выберите опцию Общие параметры.
Рис. 1. Доступ к меню Общие параметры при сохранении книги Excel
Скачать заметку в формате Word или pdf, примеры в формате Excel (файл содержит макросы)
В открывшемся окне Общие параметры (рис. 2) задайте Пароль для изменения и кликните на Рекомендовать доступ только для чтения. Кликните Ok, повторите ввод пароля, и сохраните книгу. Если появится окно Книга с таким именем уже существует, заменить ее? Кликните Да.
Рис. 2. Задание пароля для изменения книги в окне Общие параметры
Отключение в рабочей книге команды Сохранить как
В предыдущем разделе вы научились не давать возможность пользователям сохранить книгу поверх вашей, но хитрые пользователи могут сохранить копию книги в другом месте. 🙂 Чтобы отключить эту возможность, потребуется код VBA.
Событие Before Save, которое вы будете использовать в следующем коде, было впервые создано в Excel 97. Как предполагает его имя, это событие происходит перед сохранением рабочей книги, позволяя вам поймать действия пользователя еще перед этим фактом, выдать предупреждение и запретить Excel сохранять файл.
Перед тем как пытаться выполнить следующий трюк, обязательно сначала сохраните рабочую книгу в формате с поддержкой макросов *.xlsm. Если вы напишете этот код до того, как сохраните книгу, то не сможете более сохранять изменения.
Рис. 3. Открыто окно частного модуля для объекта ЭтаКнига
Введите следующий код (рис. 4) и нажмите сочетание клавиш Alt+Q, чтобы вернуться в Excel.
Рис. 4. Код в частном модуле ЭтаКнига (чтобы увеличить изображение, кликните на картинке правой кнопкой мыши и выберите опцию Открыть картинку в новой вкладке)
Проверьте, что получилось. Выберите команду Файл –> Сохранить как, вы увидите сообщение о том, что эту книгу запрещено сохранять под другим именем (рис. 5).
Рис. 5. Сообщение о запрете на сохранение книги под другим именем
Очень хитрые пользователи могут открыть редактор VBA, удалить код, и сохранить книгу в другом месте или с другим именем.
Итак, вы запретили сохранение книги, копирование книги в другое место, но пользователи всё еще могут распечатать данные. При помощи события Excel Before Print можно отследить и предупредить действия пользователя. Как и ранее, откройте окно частного модуля для объекта ЭтаКнига и введите код:
Закончив ввод кода, нажмите сочетание клавиш Alt+Q, чтобы вернуться в Excel. Теперь каждый раз, когда пользователи будут пытаться напечатать эту рабочую книгу, ничего не случится. Строка сообщения MsgBox не обязательна, но всегда полезно включать ее, хотя бы для того, чтобы проинформировать пользователя.
Если вы хотите, чтобы пользователи не могли печатать только определенные листы в книге, вместо предыдущего кода используйте следующий:
Обратите внимание, что печать будет остановлена только для листов Sheet1 и Sheet2. Конечно, имена листов вашей рабочей книги могут быть любыми. Чтобы добавить их в список кода, запишите их в кавычках, разделяя запятыми. Если вы хотите запретить печать только одного листа, укажите только одно название в кавычках, не ставя запятую.
У хитрых пользователей всё еще останется возможность сделать скриншот экрана с вашей засекреченной книгой.
[1] По материалам книги Д.Холи, Р.Холи. Excel 2007. Трюки, стр. 28–32 [2] Если вкладка Разработчик отсутствует, пройдите по меню Файл –> Параметры Excel –> Настроить ленту. Поставьте галочку напротив вкладки Разработчик.Операции с объектами Microsoft Excel
После присвоения переменной, указывающей на объект Application значения Nothing, соответствующее приложение не закрывается, хотя память, занятая переменной, освобождается. Поэтому необходимо закрывать приложение с помощью метода Quit перед освобождением соответствующей объектной переменной.
Перемещение данных между ячейками таблицы
Вначале необходимо конкретно определить, что перемещается и куда.
— Для перемещения данных требуется выделить ячейку или диапазон, то есть что перемещается.
— Затем поместить указатель мыши на рамку диапазона или ячейки.
— Далее следует перенести диапазон в то место, куда нужно переместить данные.
§ 1.8. Выделите диапазон А1: D 1 и переместить его на строку ниже.
Работа с общими книгами
Предупреждение: источник не пересчитан — нажмите кнопку Открыть и выполните пересчет книги, нажав клавишу F9. Возможно, в книге выбран режим пересчета вручную. Чтобы включить автоматический пересчет, выберите в меню Сервис команду Параметры, откройте вкладку Вычисления, а затем выберите вариант автоматически.
Рис. 2. 2.