Страницы: 1
RSS
Установка пароля листа и книги через макрос
 
Добрый день.
У коллеги в другом регионе, другом часовом поясе и на другом серваке есть табличка эксель. Мне необходимо относительно часто вносить в нее мелкие правки. Я думаю, что проще всего это будет делать макросом на его компьютере из файла, который я ему пришлю.
Каким кодом можно дать ему возможность сделать следующее открыть нужный файл для редактирования (путь может меняться), ввести пароль от файла (будет указан в макросе, буду знать только я), внести изменения (A1 = 17 например, ничего сложного, сам добавлю), запаролить обратно файл (пароль будет указан в макросе).
В идеале паролить все листы всей книги кроме одного диапазона (например A1:B2).
В связи с теоретической постановкой вопроса файл пример приложить не могу. Просто подгоню диапазон и пароль в коде под итоговые входные данные.
 
Код
Worksheets("Лист ").Protect "Пароль"
Worksheets("Лист ").Unprotect "Пароль"

ActiveWorkbook.Protect "Пароль"
ActiveWorkbook.Unprotect "Пароль"
Вредить легко, помогать трудно.
 
Цитата
Валерий Кишин написал:
У коллеги в другом регионе, другом часовом поясе и на другом серваке есть табличка эксель. Мне необходимо относительно часто вносить в нее мелкие правки. Я думаю, что проще всего это будет делать макросом на его компьютере из файла, который я ему пришлю.
А коллега с этим макросом абсолютно согласен?
Цитата
пароль  буду знать только я
И с этим он тоже согласен?  :)
Цитата
Валерий Кишин написал:
ввести пароль от файла (будет указан в макросе, буду знать только я)
Вы так уверены, что если запишите пароль в макросе, то кроме Вас его больше никто и нигде и никогда не увидит?  :)
Цитата
Валерий Кишин написал:
В связи с теоретической постановкой вопроса
Пусть данные, которые Вы хотите изменять на компьютере коллеги, находятся в каком-то определенном диапазоне на каком-то одном определенном листе или вообще в другом файле (на другие листы в своем файле Ваш коллега их сможет вытащить), и тогда пароль к этим данным Вы с коллегой можете сообщать друг другу например в смс, или в разговоре по телефону, или по E-mail (раз уж этот пароль нужен только Вам двоим), и макросов для этого не нужно  :)
 
Мне нужно правильное и единообразное ведение одинаковой таблички несколькими людьми, а это значит, что "тайное" вмешательство одного в свою копию негативно отразится на последующих операциях

Цитата
_Igor_61 написал: А коллега с этим макросом абсолютно согласен?
В данной ситуации меня это не интересует так как он будет вести табличку для моих нужд и не должен уничтожить её добавлением объединенных ячеек, классных цветов и орфографическими ошибками

Цитата
_Igor_61 написал: ...если запишите пароль в макросе, то кроме Вас его больше никто и нигде и никогда не увидит?
В этом случае это вполне рабочая схема. Пароль тут скорее для предотвращения разграбления и потрошения кусочков таблички нежели ее реальная защита. Даже если пароль будет "123" это сильно облегчит взаимодействие
 
Пароль можно установить сразу в файле, который отдаете коллеге:
Код
Private Sub Workbook_Open() 
    ActiveWorkbook.Protect Password:=pass, structure:=True 'Защита книги
    Worksheets("Лист1").Protect Password:=pass, UserInterfaceOnly:=True: Worksheets("Лист1").EnableSelection = xlNoRestrictions ' Защита листа для пользователя, но не макроса
Sheets("Лист1").Range("a1:s150").Locked = True 'Защищаем диапазон рабочих ячеек
Sheets("Лист1").Range("A1").Locked = False 'Снимаем защиту с ячеек для пользователя
Sheets("Лист1").Range("B2:C2").Locked = False
End Sub
Если пароль требуется во многих местах макроса(ов) - его можно задать в любом модуле в виде константы
Код
Public Const pass As Integer = 123

п.с. Редактирование макросов тоже надо защитить. В редакторе VBA - Tools - VBAProject properties установить пароль.
Теперь нужно написать второй файл, который внесет изменения в ячейки первого. Или попросить коллегу прислать файл для внесения изменений.
Страницы: 1
Наверх