Макрос предназначен для замены паролей на открытие, для большого количества файлов Excel.
В качестве исходных данных, задаётся старый и новый пароли.
Если поле «старый пароль» — пустое, подразумевается, что у файлов нет пароля.
Если поле «новый пароль» — пустое, подразумевается, что с файлов снимается пароль.
Нажимаем кнопку, — появляется диалоговое окно выбора папки, — после чего макрос в цикле открывает всё файлы,
и пересохраняет их с новым паролем.
Возможно, у некоторых файлов не получится изменить пароль
(например, у тех, где пароль на открытие отличается от заданного в поле «Старый пароль»)
Список таких файлов программа выводит в таблицу, в виде гиперссылок.
ВНИМАНИЕ: Это очень опасный макрос, — если вы случайно забудете, какой пароль вы установили на файлы,
— все обработанные макросом файлы Excel станут недоступны!
Так что, пользуйтесь макросом на свой страх и риск.
Напоминаю: снять (сбросить) пароль н а открытие файла невозможно!
(только полным перебором, — а это очень долго)
Часть кода макроса: (см. прикреплённый файл)
Sub ChangePasswords()
On Error Resume Next
PassOld$ = shs.Range("PassOld").Text
PassNew$ = shs.Range("PassNew").Text
folder$ = GetFolder(777, True) ' запрашиваем имя папки
If folder$ = "" Then Exit Sub ' выход, если пользователь отказался от выбора папки
Dim coll As Collection
' считываем в колекцию coll имена файлов XLS*
Set coll = FilenamesCollection(folder$, "*.xls*")
If coll.Count = 0 Then
MsgBox "В выбранной папке не найдено ни одного файла Excel", vbExclamation
Exit Sub
End If
Dim WB As Workbook, nOK&, nErr&
' очистка таблицы ошибок
Intersect(shs.UsedRange, shs.Range("b11:b" & shs.Rows.Count)).ClearContents
Application.ScreenUpdating = False ' отключаем обновление экрана
For Each Filename In coll ' перебираем найденные в папке файлы
Err.Clear: Set WB = Nothing
Set WB = Workbooks.Open(Filename, , , , PassOld$) ' пробуем открыть очередной файл
If Not WB Is Nothing Then ' если файл открылся
WB.Password = PassNew$ ' ставим новый пароль
WB.Close True ' закрываем файл с сохранением изменений
nOK& = nOK& - (Err = 0) ' считаем количество успешно сохранённых файлов
Else ' файл не открылся - выводим в список ошибок
nErr& = nErr& + 1
With shs.Range("b" & 10 + nErr&)
.Value = Filename
.Hyperlinks.Add .Resize(, 1), Filename, "", "Попробовать открыть файл вручную"
End With
End If
DoEvents
Next
Application.ScreenUpdating = True
msg$ = "Найдено файлов в папке: " & coll.Count & vbNewLine & _
"Удалось заменить пароли на файлах: " & nOK&
MsgBox msg, vbInformation, "Готово"
End Sub
Вложение |
Размер |
Загрузки |
Последняя загрузка |
SetPasswords.xlsb |
27.69 КБ |
56 |
52 недели 9 часов назад |
|
|||
smilerZ
27.10.05 — 09:30 |
Добрый день. |
||
Sasha
1 — 27.10.05 — 09:38 |
Эксель.ActiveWorkbook.Password = Пароль; |
||
Sasha
2 — 27.10.05 — 09:44 |
Даже лучше наверное так: |
||
Gloom
3 — 27.10.05 — 09:48 |
(1,2)Это установка пароля на открытие книги, а не на защиту. |
||
smilerZ
4 — 27.10.05 — 09:54 |
спасибо. |
||
Sasha
5 — 27.10.05 — 09:58 |
(3)Хм, а все моя невнимательность %-) |
||
smilerZ
6 — 27.10.05 — 10:02 |
to 3 |
||
Sasha
7 — 27.10.05 — 10:05 |
(6) а разве не так? |
||
smilerZ
8 — 27.10.05 — 10:13 |
возможно, но и так то же не работает |
||
Zhuri
9 — 27.10.05 — 10:13 |
Реально работает |
||
smaharbA
10 — 27.10.05 — 10:21 |
Эксель = СоздатьОбъект(«Excel.Application»); |
||
smaharbA
11 — 27.10.05 — 10:24 |
+(10) 4 (0) потомучто у тебя книга/лист стала неактивной, можно как в (9) но (10) лучче |
||
smilerZ
12 — 27.10.05 — 10:35 |
Эксель.ActiveSheet.Protect(«12345678»); |
||
Gloom
13 — 27.10.05 — 10:43 |
(12)Свойство EnableSelection относится к т.н. «does not stick», т.е. не запоминаются при программной установке, только при ручной установке через интерфейс… |
||
smilerZ 14 — 27.10.05 — 11:00 |
to 10, 12 |
Andrey72 4 / 4 / 2 Регистрация: 04.05.2013 Сообщений: 62 |
||||
1 |
||||
13.05.2014, 12:08. Показов 2157. Ответов 6 Метки нет (Все метки)
Прошу помочь с вопросом:
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
13.05.2014, 12:08 |
6 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||
13.05.2014, 12:53 |
2 |
|||
Как-то так
С коленки
0 |
Andrey72 4 / 4 / 2 Регистрация: 04.05.2013 Сообщений: 62 |
||||
13.05.2014, 13:02 [ТС] |
3 |
|||
Не работает. в таком виде пишет что должно быть приравнено или использовано…
то не работает
0 |
Памирыч Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
||||
13.05.2014, 13:07 |
4 |
|||
в таком виде Так я Вам принцип даю, а не готовый код.
0 |
Юпатов Дмитрий 1706 / 1194 / 227 Регистрация: 23.12.2010 Сообщений: 1,526 |
||||
13.05.2014, 13:18 |
5 |
|||
Сообщение было отмечено Памирыч как решение РешениеРаз уж пошла свистопляска с поздним связыванием, не сочти за труд попользоваться браузером объектов в VBA Excel.
Function Open(Filename As String, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMru], [Local], [CorruptLoad]) As Workbook Filename As String — обязательный параметр
Добавлено через 1 минуту
Так я Вам принцип даю, а не готовый код Та у него вроде как книга зашифрована. В 2007 это «Главное меню -Подготовить-Зашифровать документ».
2 |
4 / 4 / 2 Регистрация: 04.05.2013 Сообщений: 62 |
|
13.05.2014, 13:25 [ТС] |
6 |
Та у него вроде как книга зашифрована. В 2007 это «Главное меню -Подготовить-Зашифровать документ». Вот именно, необходимо было ввести пароль при открытии книги, спасибо Дмитрию.
0 |
Памирыч |
13.05.2014, 13:26
|
Не по теме:
книга зашифрована аа… Дошло
0 |
marker_mc Пользователь Сообщений: 228 |
Всем доброе утро. Подскажите как реализовать следующее: есть файл с листами в примере их 3, в реале будет 6. Нужно сделать так, чтоб при открытии данного файла, эксель запрашивал пароль, и в зависимости от веденного пароля, открывало только тот лист, к которому будет привязан этот пароль, а все остальные листы ставали недоступными этому пользователю. Файл приложил, хотя это обычный только созданный док с 3-мя листами. |
ikki Пользователь Сообщений: 9709 |
насколько квалифицированны и любознательны Ваши пользователи? фрилансер Excel, VBA — контакты в профиле |
marker_mc Пользователь Сообщений: 228 |
Не очень любознательны, уровень у людей работающих с екселем ниже среднего. До моего прихода в компанию про макросы и не слышали даже)))) Впринципи нужно чтоб листы по умолчанию были в режиме xlSheetVeryHiden — этого будет достаточно чтоб они не знали про их наличие))) но при вводе пароля (при открыти доккумента) видимым ставал тот лист которому пароль соответствует. |
ikki Пользователь Сообщений: 9709 |
тупо в лоб, как-то так: Private Sub Workbook_Open() на проект можно поставить защиту — должно хватить. фрилансер Excel, VBA — контакты в профиле |
marker_mc Пользователь Сообщений: 228 |
Этого вполне достаточно. Большое спасибо |
Hugo Пользователь Сообщений: 23249 |
Вообще-то все скрыть не получится, один с инструкцией нужно оставить. |
marker_mc Пользователь Сообщений: 228 |
Та у нас тут вообще всё запутано)))) Насчет одного листа я это уже успел заметить))) плюс ко мне только дошло насчет отключенных макросов((( реально тогда ничего не получиться. Остановлюсь пожалуй на разных файлах, которые подвязаны к основному. Благодарю за помощь. |
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
Как вариант: <EM>Каждому пользователю свой лист/диапазон</EM> Возможность защиты от глаз при отключенных макросах предусмотрена. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
ikki Пользователь Сообщений: 9709 |
вот это — уже по-серьезному. фрилансер Excel, VBA — контакты в профиле |
Hugo Пользователь Сообщений: 23249 |
Проверил — сохранился под петровым и симитировал отключение электричества (нет, не выдернул 220 — просто снял задачу :)) |
Hugo Пользователь Сообщений: 23249 |
И опять же — книга при закрытии сохраняется. А если не хочу/нельзя сохранять? |
marker_mc Пользователь Сообщений: 228 |
The_Prist, очень интересный пример. |
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
Только что обновил статью — можно указывать для каждого листа еще и диапазоны. Hugo — проблему можно сделать всегда. И отключение электричества и пр. Я предложил решение, а пользоваться им или поискать стандартные методы — дело каждого. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
marker_mc Пользователь Сообщений: 228 |
Вы не множко видно не поняли что я имел ввиду. Я хотел чтоб лист был к примеру 1, но в зависимости от от введенного пользователя/пароля, отображался исключительно определённый диапазон таблицы. Например таблица у нас А1:С10, по умолчания строки с 1 по 10 скрыты и отобразить вручную чтоб их было не возможно. Теперь выбираем пользователя/пароль, и вуаля открываються только те строки которые заданы данному пользователю. А остальный отобразить по прежнему нельзя. |
Hugo Пользователь Сообщений: 23249 |
Мне кажется, что это вообще всё шатко и ненадёжно… Первое желание — закрыть без сохранения и открыть файл заново. Тут и попали. Т.е. думаю нужно поменять «листы на исходную» с закрытия книги на сохранение изменений. Правда тогда после сохранения снова нужно заводить пароли, ну или как-то код усложнять дальше… |
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
Здесь надо писать код заново. Но необходимо доработать проверку на скрытие строк или столбцов. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
vikttur Пользователь Сообщений: 47199 |
#17 12.06.2012 14:43:35 Я как раз делаю такой проектик: каждому — свой лист по паролю.
Можно прятать листы при закрытии книги. При старте — только форма для ввода пароля на фоне информационного листа. |
||
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
Добавил в статью файл, в котором реализована возможность отображать только указанные строки/столбцы в указанных листах. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Guest Гость |
#19 12.06.2012 15:20:53 очень полезно. Спасибо. |
@amitmahapatra
VBA and macro scripting
You cannot create macros with VBA in Excel for the web, but you can open and edit VBA-enabled spreadsheets without removing (or corrupting) the VBA contained in the file. Learn more about getting started with macros.
You could use this code with other versions.
Only if it is your own file, otherwise you could be liable to prosecution.
Hope I was able to help you.
Nikolino
I know I don’t know anything (Socrates)
* Kindly Mark and Vote this reply if it helps please, as it will be beneficial to more Community members reading here