Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как макросом снять защиту с листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как макросом снять защиту с листа
brewer Дата: Вторник, 29.10.2019, 16:46 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Надо макросом снять защиту с листа, выполнить действия, потом снова поставить. Как это прописать?

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

Заранее благодарю.
К сообщению приложен файл: -2019-2.xls (95.5 Kb)
 
Ответить
СообщениеНадо макросом снять защиту с листа, выполнить действия, потом снова поставить. Как это прописать?

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

Заранее благодарю.

Автор - brewer
Дата добавления - 29.10.2019 в 16:46
Pelena Дата: Вторник, 29.10.2019, 17:54 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19392
Репутация: 4537 ±
Замечаний: ±

Excel 365 & Mac Excel
А что говорит макрорекодер?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеА что говорит макрорекодер?

Автор - Pelena
Дата добавления - 29.10.2019 в 17:54
WildGodlike Дата: Среда, 30.10.2019, 12:55 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
brewer, Добрый день.
[vba]
Код
ActiveSheet.Protect Password:="1111"
ActiveSheet.Unprotect Password:="1111"
[/vba]
Больше подробной информации тут
 
Ответить
Сообщениеbrewer, Добрый день.
[vba]
Код
ActiveSheet.Protect Password:="1111"
ActiveSheet.Unprotect Password:="1111"
[/vba]
Больше подробной информации тут

Автор - WildGodlike
Дата добавления - 30.10.2019 в 12:55
brewer Дата: Среда, 30.10.2019, 14:20 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо за советы. сделал следующее, но если дата не обновлялась, последний лист при открытии остается не защищенным.
Даже если его защитить и сохранить, при открытии он снова разблокирован. Где ошибка подскажите пожалуйста?
Насколько я понял, если дата не изменилась, макрос не завершается и не блокирует активный лист документ.
Если дата изменилась, создается новый лист и блокируется. Но при последующем открытии в течении дня, опять перестает блокироваться.

[vba]
Код
Private Sub Workbook_Open()
ActiveSheet.Unprotect Password:="123"
Dim sh As Worksheet, rng As Range
Dim D As String, D1$, i%
D = Format(Date, "DD.MM")
For Each sh In Worksheets
If sh.Name = D Then Exit Sub
Next
MsgBox "Сейчас будет добавлен новый лист c текущей датой.""" & D & """", vbInformation ' вывод сообщения можно закомментировать
Do
i = i + 1
D1 = Format(Date - i, "DD.MM")
For Each sh In Worksheets
If sh.Name = D1 Then Exit Do
Next
Loop
Sheets(D1).Copy After:=Sheets(D1)
Set sh = Sheets(Sheets(D1).Index + 1)
With sh
.Name = D
.Range("V5:AA36").Value = 0
Set rng = .Cells.Find(What:="'*'!", LookIn:=xlFormulas, LookAt:=xlPart)
If Not rng Is Nothing Then
.Cells.Replace What:=Left(rng.Formula, InStr(rng.Formula, "!") - 1), Replacement:="='" & D1 & "'", LookAt:=xlPart
ActiveSheet.Protect Password:="123"
End If
End With

End Sub

[/vba]
Заранее благодарю.


Сообщение отредактировал brewer - Среда, 30.10.2019, 15:21
 
Ответить
СообщениеСпасибо за советы. сделал следующее, но если дата не обновлялась, последний лист при открытии остается не защищенным.
Даже если его защитить и сохранить, при открытии он снова разблокирован. Где ошибка подскажите пожалуйста?
Насколько я понял, если дата не изменилась, макрос не завершается и не блокирует активный лист документ.
Если дата изменилась, создается новый лист и блокируется. Но при последующем открытии в течении дня, опять перестает блокироваться.

[vba]
Код
Private Sub Workbook_Open()
ActiveSheet.Unprotect Password:="123"
Dim sh As Worksheet, rng As Range
Dim D As String, D1$, i%
D = Format(Date, "DD.MM")
For Each sh In Worksheets
If sh.Name = D Then Exit Sub
Next
MsgBox "Сейчас будет добавлен новый лист c текущей датой.""" & D & """", vbInformation ' вывод сообщения можно закомментировать
Do
i = i + 1
D1 = Format(Date - i, "DD.MM")
For Each sh In Worksheets
If sh.Name = D1 Then Exit Do
Next
Loop
Sheets(D1).Copy After:=Sheets(D1)
Set sh = Sheets(Sheets(D1).Index + 1)
With sh
.Name = D
.Range("V5:AA36").Value = 0
Set rng = .Cells.Find(What:="'*'!", LookIn:=xlFormulas, LookAt:=xlPart)
If Not rng Is Nothing Then
.Cells.Replace What:=Left(rng.Formula, InStr(rng.Formula, "!") - 1), Replacement:="='" & D1 & "'", LookAt:=xlPart
ActiveSheet.Protect Password:="123"
End If
End With

End Sub

[/vba]
Заранее благодарю.

Автор - brewer
Дата добавления - 30.10.2019 в 14:20
китин Дата: Среда, 30.10.2019, 15:13 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 7028
Репутация: 1077 ±
Замечаний: 0% ±

Excel 2007;2010;2016
brewer, - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь), не цитатой


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеbrewer, - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь), не цитатой

Автор - китин
Дата добавления - 30.10.2019 в 15:13
brewer Дата: Среда, 30.10.2019, 15:23 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Сделал.
 
Ответить
СообщениеСделал.

Автор - brewer
Дата добавления - 30.10.2019 в 15:23
brewer Дата: Четверг, 31.10.2019, 10:19 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Подскажите если кто знает. Как поставить защиту при открытии, после макроса. Вопрос выше.

Спасибо большое.
 
Ответить
СообщениеПодскажите если кто знает. Как поставить защиту при открытии, после макроса. Вопрос выше.

Спасибо большое.

Автор - brewer
Дата добавления - 31.10.2019 в 10:19
Pelena Дата: Четверг, 31.10.2019, 16:03 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19392
Репутация: 4537 ±
Замечаний: ±

Excel 365 & Mac Excel
если дата не изменилась, макрос не завершается и не блокирует активный лист документ

Снимайте защиту ПОСЛЕ того, как проверили наличие/отсутствие листа с текущей датой


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
если дата не изменилась, макрос не завершается и не блокирует активный лист документ

Снимайте защиту ПОСЛЕ того, как проверили наличие/отсутствие листа с текущей датой

Автор - Pelena
Дата добавления - 31.10.2019 в 16:03
brewer Дата: Четверг, 31.10.2019, 16:26 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не подскажите, в таком случае если дата не менялась то все ок.
Но если дата поменялась создался новый лист и потом защитился новый, а старый остался не закрытым.
Как сделать что бы закрывался и новый активный и старый.
 
Ответить
СообщениеНе подскажите, в таком случае если дата не менялась то все ок.
Но если дата поменялась создался новый лист и потом защитился новый, а старый остался не закрытым.
Как сделать что бы закрывался и новый активный и старый.

Автор - brewer
Дата добавления - 31.10.2019 в 16:26
Pelena Дата: Четверг, 31.10.2019, 18:56 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 19392
Репутация: 4537 ±
Замечаний: ±

Excel 365 & Mac Excel
Зачем вообще снимать защиту со старого листа? Вы его скопировали и уже на новом листе снимаете защиту, добавляете формулы и снова ставите защиту
[vba]
Код
    With sh
        .Unprotect Password:="123"
        .Name = D
        .Range("V5:AA36").Value = 0
        Set rng = .Cells.Find(What:="'*'!", LookIn:=xlFormulas, LookAt:=xlPart)
        If Not rng Is Nothing Then
            .Cells.Replace What:=Left(rng.Formula, InStr(rng.Formula, "!") - 1), Replacement:="='" & D1 & "'", LookAt:=xlPart
        End If
        .Protect Password:="123"
    End With
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗачем вообще снимать защиту со старого листа? Вы его скопировали и уже на новом листе снимаете защиту, добавляете формулы и снова ставите защиту
[vba]
Код
    With sh
        .Unprotect Password:="123"
        .Name = D
        .Range("V5:AA36").Value = 0
        Set rng = .Cells.Find(What:="'*'!", LookIn:=xlFormulas, LookAt:=xlPart)
        If Not rng Is Nothing Then
            .Cells.Replace What:=Left(rng.Formula, InStr(rng.Formula, "!") - 1), Replacement:="='" & D1 & "'", LookAt:=xlPart
        End If
        .Protect Password:="123"
    End With
[/vba]

Автор - Pelena
Дата добавления - 31.10.2019 в 18:56
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!