Внимание: акция!
Только 31 декабря и 1 января — скидка на все надстройки 50% при оплате через СБП
(оплачиваете половину от стоимости, указанной на странице приобретения лицензии)
|
Макросы для Excel. Парсинг сайтов. Программист Excel. Надстройки для Excel, и макросы VBA под заказ. |
|
|
Только 31 декабря и 1 января — скидка на все надстройки 50% при оплате через СБП
Макрос предназначен для замены паролей на открытие, для большого количества файлов 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
|
||||
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
Комментарии
Макрос хорош, я добавил еще строки на отключение диалоговых окон, а то напрягает каждый раз нажимать на ОК если настроены внешние связи.
Вотя я и был неправ )) перебором он очень долго будет ломать )) автору спасибо
А за макрос спасибо он очень выручает
насчет того что долго сбрасывать пароль несогласен ) есть коллекция ломалок от элкомсофта так они без проблем хакают пароли офиса
Это лучший макрос в моей жизни!
Отправить комментарий