Обучение Excel для всех
Обучение Excel
БЕЗ ВЫХОДНЫХ

Макросы

Главная » Макросы » Готовые макросы » Работа с листами Скачать Excel-файл

Как защитить все листы книги Excel

Что делает макрос


В этом макросе вы выбираете листы и просто применяете защиту с помощью пароля.

Пароль аргумент определяет пароль, необходимый для снятия защиты. Аргумент Пароль не является обязательным. Если его вообще опустить, лист по-прежнему будет защищен; вам просто не нужно будет вводить пароль для снятия его защиты. Кроме того, следует помнить, что пароли Excel чувствительны к регистру.

Код функции

  1. Function FileIsOpenTest(TargetWorkbook As StringAs Boolean
  2. Dim TestBook As Workbook                 '1 Объявляем переменные
  3. On Error Resume Next                     '2 Проверяем на ошибки
  4. Set TestBook = Workbooks(TargetWorkbook) '3 Попробуем проверить книгу
  5.    If Err.Number = 0 Then                '4 Если ошибки не произошло, то книга уже открыта
  6.       FileIsOpenTest = True
  7.    Else
  8.       FileIsOpenTest = False
  9.    End If
  10. End Function

Как работает этот код


  1. Первое, что макрос делает – указывает переменную строку, содержащую имя файла, который выбирает пользователь. TestBook это имя переменной строки.
  2. В шаге 2, мы проверяем Excel на ошибки. В случае ошибки, возобновить код. Без этой строки код остановится при возникновении ошибки. Опять же, мы проводим тестирование данного файла, чтобы увидеть, назначен ли он переменной объекта. Поэтому, если данная книга может быть назначена, она открыта; если возникает ошибка, она закрыта. Если возникла ошибка, нам нужно знать код.
  3. На шаге 3, присваиваем книге переменную объекта TestBook. Сама строка переменной называется TargetWorkbook. TargetWorkbook передает функции в объявлении функции (см первую строку кода). Данная функция устраняет необходимость жесткого кодирования имени книги, что позволяет нам передать его в качестве переменной.
  4. На шаге 4, проверяем, произошла ли ошибка. Если ошибки не произошло, книга открыта, поэтому мы устанавливаем FileIsOpenTest в True. Если произошла ошибка, это означает, что книга не открыта. В этом случае мы устанавливаем FileIsOpenTest значение false.

Это функция, которая может быть использована для оценки любого файла, который передаст к нему, через его TargetWorkbook аргумент. Мы будем использовать затем эту функцию в макросе. Следующий макрос показывает, как реализовать эту функцию. Здесь мы используем одни и те же макросы, которые вы видели в предыдущем разделе, "Макрос 7: открытие конкретной книги, определенной пользователем», но на этот раз, мы создаем новую функцию FileIsOpenTest, чтобы убедиться, что пользователь не может открыть уже открытый файл.

Код макроса

  1. Sub Macro8()
  2. Dim FName As Variant '1 Определить переменную строки.
  3. Dim FNFileOnly As String
  4. FName = Application.GetOpenFilename( _
  5.     FileFilter:="Excel Workbooks,*.xl*", _
  6.     Title:="Выбери файл, который надо открыть", _
  7.     MultiSelect:=False)
  8. '2 Метод GetOpenFilename активизирует диалоговое окно, в котором:
  9.     'FileFilter - определяем тип файла
  10.     'Title - заголовок окна
  11.     'MultiSelect - множественный выбор
  12. If FName <> False Then '3 Откройте выбранный файл, если он еще не открыт
  13.     FNFileOnly = StrReverse(Left(StrReverse(FName), InStr(StrReverse(FName), "\") - 1))
  14.     If FileIsOpenTest(FNFileOnly) = True Then
  15.         MsgBox "Выбранный файл уже открыт"
  16.     Else
  17.         Workbooks.Open Filename:=FName
  18.     End If
  19. End If
  20. End Sub

Как использовать

Макрос 1. Создаем новую книгу с нуля

Что делает макрос

Следующий макрос копирует диапазон ячеек из активного листа и вставляет данные в новую книгу.

Код макроса

Sub Macro1()
 
Sheets("Лист1").Range("B4:C15").Copy
'1 копируем данные с листа
Workbooks.Add
'2 создаем новую книгу
ActiveSheet.Paste
'3 вставляем данные
Application.DisplayAlerts = False
'4 отключаем системные сообщения
ActiveWorkbook.SaveAs Filename: ="C:\Отчёты\Отчёт на 2016.xlsx"
'5 сохраняем по нужному адресу
Application.DisplayAlerts = True
'6 включаем системные сообщения
End Sub
 

Как работает этот код

1. Копируем данные из ячеек B4:С15. Обратите внимание, что мы указываем полный адрес с именем листа и диапазона. Это позволит не допустить ошибки, если у Вас открыто несколько файлов Excel одновременно. 2. Используем метод Add объекта Workbook, чтобы создать новую рабочую книгу. Это тоже самое, если бы мы вручную нажали Файл?Создать?Новый документ 3. На этом этапе используется метод Paste, чтобы отправить данные, которые вы скопировали в ячейку А1 новой книги. Обратите внимание на то, что код ссылается на объект ActiveSheet. При создании новой книги она тут же становится активной. Если быть точнее, то становится активный лист в новой (только что созданной) книге. 4. Далее используем метод DisplayAlerts. Используя свойство False - отключаем системные предупреждения Excel. Можно этого не делать, но мы можем запустить этот макрос несколько раз, и в этом случае Excel будет пытаться сохранить один и тот же файл несколько раз. Что происходит, когда вы пытаетесь сохранить книгу несколько раз? Правильно - Excel предупреждает, что в папке уже есть файл с таким же именем и спрашивает: "Хотите ли вы переписать ранее существующий файл?". Если мы не хотим, чтобы Excel при каждом сохранении спрашивал нас - подавляем это предупреждение. 5. Сохраняем файл с помощью метода SaveAs. Обратите внимание, что мы пишем полный адрес, включая имя файла с расширением (при сохранении на рабочий стол ActiveWorkbook.SaveAs CreateObject("WScript.Shell"). SpecialFolders("Desktop") & "\Отчет на 2016.xlsx"). 6. Поскольку мы запретили показывать системные сообщения в пункте 4, мы должны включить их обратно. Если этого не сделать Excel будет подавлять все предупреждения, что не допустимо.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль: 1. Активируйте редактор Visual Basic, нажав ALT + F11. 2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта. 3. Выберите Insert?Module. 4. Введите или вставьте код во вновь созданном модуле. 5. Измените имя листа, диапазон ячеек, и место сохранения файла.

Категория: Работа с листами
Просмотров: 1730
Всего комментариев: 0