Страницы: 1
RSS
Макрос не работает в блокированным листе
 
Привет коллеги

У меня есть EXCEL файл где макрос удаляет все формулы и оставляет только значение. Но если я устанавливаю пароль в листе макрос не работает.
Пожалуйста подскажите как сделать чтобы в заблокированном листе работал макрос

Заранее спасибо
 
Здравствуйте.
Программно в этом макросе снимите пароль и разблокируйте лист, выполните макрос и затем, опять таки, программно верните всё в исходное состояние.
 
Так не получится поскольку макрос рашитон  чтобы защитить данные . То есть макрос будет работать там где не знают пароля  
 
gagikbabayan13, Доброго времени суток.
Цитата
gagikbabayan13 написал:
макрос рашитон  чтобы защитить данные
Тогда вам точно стоит почитать данную статью!
И сделать исправления в вашем коде. Удачи.
 
Цитата
MikeVol написал:
И сделать исправления в вашем коде. Удачи.
правда это решение все равно позволит зловреду нагадить через макрос. по этому надо почитать все что касается о псевдозащите файлов, листов....  Вопрос, зачем защита? Для меня защита листа  - это чтоб случайно не сбили настроенное.
По вопросам из тем форума, личку не читаю.
 
БМВ, Приветствую вас!
Цитата
БМВ написал:
позволит зловреду нагадить через макрос
но мы то незнаем что там за код макроса у gagikbabayan13
Да и само понятие защита листа (листов) в excel-е относительное. Для новичка в excel да, она защитит но от более продвинутого пользователя она, эта защита не поможет.
Я на своих книгах нигде не ставлю защиту листа (листов) так как этими книгами пользуются пользователи далеко не новички. Не вижу смысла в этом. Как-то так.
 
Цитата
MikeVol написал:
Я на своих книгах нигде не ставлю защиту листа (листов) так как этими книгами пользуются пользователи далеко не новички. Не вижу смысла в этом.
так и я к тому.
По вопросам из тем форума, личку не читаю.
 
Цитата
gagikbabayan13 написал:
поскольку макрос рашитон  чтобы защитить данные . То есть макрос будет работать там где не знают пароля
Так пароль и не нужно показывать или вводить руками, простые пользователи его и не узнают. В самом макросе, который защищён паролем, перед выполнением кода прописываете действие для разблокировки, затем выполняется основной код и по окончании обратно устанавливаете защиту в завершающей части вашего макроса.
Изменено: asesja - 25.02.2024 21:32:46
 
Цитата
написал:
но мы то незнаем что там за код макроса у  gagikbabayan13
Private Sub Workbook_Open()
  Dim d As Date
  d = "01.01.2050"
  If Date > d Then
      Call All_Formulas_To_Values_In_All_Sheets
      ActiveWorkbook.Save
  End If
End Sub
Sub All_Formulas_To_Values_In_All_Sheets()
Dim wsSh As Worksheet
  For Each wsSh In Worksheets
      wsSh.UsedRange.Value = wsSh.UsedRange.Value
  Next wsSh
End Sub
 
Уважаемые коллеги я новичок в области макросов и поэтому очень часто не знаю простые вещи. Я знаю что пароль ненадёжна, но это мне нужно чтобы не изменили структуру
 
Цитата
написал:
В самом макросе, который защищён паролем, перед выполнением кода прописываете действие для разблокировки, затем выполняется основной код и по окончании обратно устанавливаете защиту в завершающей части вашего макроса.
Можешь мне помочь изменить код по твоему идею  
 
gagikbabayan13, Доброго времени суток. Из той статьи что я выше давал вам ссылку:
Код
Sub All_Formulas_To_Values_In_All_Sheets()
Dim wsSh As Worksheet
    
   For Each wsSh In Worksheets
      wsSh.Unrotect "ваш пароль"   ' Поменяйте ваш пароль на реальный пароль, мы то его незнаем
      wsSh.UsedRange.Value = wsSh.UsedRange.Value
      wsSh.Protect Password:="ваш пароль", UserInterfaceOnly:=True
   Next wsSh

End Sub

И оформите пожалуйста в вашем посте код соответствующим тегом. Как это можно сделать, посмотрите на скриншот ниже.
Удачи.
Изменено: MikeVol - 26.02.2024 21:50:59
 
Цитата
gagikbabayan13 написал:
Можешь мне помочь изменить код по твоему идею  
MikeVol в сообщении #12 тебе предложил вариант как это сделать (о чём собственно я и говорил в сообщениях #2 и #8).
В середину добавь свой код между этих строк.
Код
wsSh.UsedRange.Value = wsSh.UsedRange.Value
    'Твой код
wsSh.Protect Password:="ваш пароль", UserInterfaceOnly:=True
 
Цитата
asesja написал:
КодwsSh.UsedRange.Value = wsSh.UsedRange.Value
   'Твой код
wsSh.Protect Password:="ваш пароль", UserInterfaceOnly:=True
asesja, Приветствую вас. А снять защиту? Будет потом ещё вопросы у gagikbabayan13.
 
Я в подобном случае не просто указывал пароль в макросе (что можно легко посмотреть по Alt-F11, а сохранил его на листе в определенном месте, считывал его и присваивал переменной с переворотом и потом уже снимал блокировку на листе в макросе, делал нужное действие на листе и снова блокировал лист. Конечно защита от дурака, не более, но...
Goedenavond!
 
seggi, тогда уж лучше на сам макрос поставить пароль, чтобы по Alt-F11 просто так не посмотреть. Кому нужно, тот посмотрит, а от простых (случайных) пользователей небольшая, но всё же защита.
 
Огромное спасибо коллеги Вы мне очень помогли
Страницы: 1
Наверх