Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Скидання пароля з проекту VBA, та файлів Excel, Word, Access

Коли працюєш із старими файлами можна часто стикнутись із такою проблемою як втрата потрібного пароля що був встановлений на VBA проект чи файл. Тож розглянемо як можна скинути пароль для продовження роботи!

VBA проект

Крок 1

Створити копію файлу, щоб не втратити дані, якщо щось піде не так!

Крок 2

Файли Excel(*xlsm) та Word(*docm) являють собою запаковані архіви які містять усю інформацію. Для роботи як з архівом перейменовуємо розширення файлу на *rar

Відкриваємо архіватором наш архів та шукаємо наступну теку

Примітка: для документу Word буде тека word

В теці буде наявний файл

необхідно його скопіювати на робочий стіл (чи довільне місце поза архівом) та відкрити для редагування

Примітка: У файлі міститься велика к-ть спец. символів тому слід використовувати текстовий редактор з їх підтримкою інакше можна втратити усі макроси у файлі! В даному випадку використано редактор - Notepad++ (звичайний блокнот не опрацьовує усіх символів у файлі)

У кінці файлу будуть міститись наступні рядки

Все що необхідно, це пошкодити блок DPB замінивши B на іншу літеру латинського алфавіту, наприклад f.

Зберегти файл та скопіювати його назад у архів, із заміною.

Замінити розширення *rar назад на *xlsm (чи *docm для Word)

Крок 3

При відкритті помилку буде наступне повідомлення

Натискаємо Так

Додатково можлива помилка такого типу

Вона свідчить про невідповідність паролю. Натискаємо OK

Відкриваємо VBEditor Alt+F11 та відкриваємо вікно VBAProject Properties (Total->VBAProject Properties)

і знімаємо позначку з Lock project for viewing та натиснути OK

Примітка: Якщо у вас продовжує видавати помилку 40230 потрібно встановити свій пароль зберегти книгу і при повторному відкритті його забрати якщо його не потрібно!

Усе VBA проект у файлі доступний для подальшої роботи

Винятки

Для старих форматів *xls та doc немає дозволу на заміну/редагування фалів в теці тому є два способи вирішення:

- перезберегти файл у новіший формат

- скористатись HEX редактором

При використанні 2 способу потрібно відкрити даним редактором файл та знайти усі значення які відповідають DPB і аналогічно замінити літеру B, після чого зберегти як новий файл з потрібним розширенням

Примітка: значення DPB може повторюватись кілька разів у редакторі тож їх усіх потрібно замінити на однакове (ваше змінене)

Подальші дії описано в кроці 3

Примітка: Так як файли Access не можна відкривати як архів, то до них також застосовується HEX редактор для скидання пароля.


Скидання вручну Excel, Word

Виконуємо також дії, що в кроці 2 для проектів VBA, але зміни будемо вносити вже не в VBAProject.bin:

Для скидання пароля з книги Excel (*xlsx, *xslm ...):

- вибираємо файл workbook.xml із теки xl та натиснувши правою кнопкою миші (далі ПКМ) обираємо редагувати

- у відкритому, в блокноті, файлі шукає слово Protection як результат буде тег на подобу цього:

< workbookProtection workbookPassword="CF7A" lockStructure="1"/ >

- потрібно його просто стерти, але не змінюючи інших, та зберегти

- змінюємо розширення файлу назад і отримаємо незахищену робочу книгу.

Для скидання пароля з аркуша Excel (*xlsx, *xslm ...):

- переходимо в теку xl\worksheets вибираємо файл із потрібним аркушем та натиснувши ПКМ обираємо редагувати

- у відкритому, в блокноті, файлі шукає слово Protection як результат буде тег на подобу цього:

< sheetProtection password="CF7A" sheet="1"/ >

- потрібно його просто стерти, але не змінюючи інших, та зберегти

- змінюємо розширення файлу назад і отримаємо незахищену робочу книгу.

Для скидання пароля з документу Word (*docx, *docm ...):

- вибираємо файл settings.xml із теки word та натиснувши ПКМ обираємо редагувати

- у відкритому, в блокноті, файлі шукає слово Protection як результат буде тег на подобу цього:

< w:documentProtection w:edit="readOnly" w:formatting="1" w:enforcement="1" w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash" w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14" w:cryptSpinCount="100000" w:hash="CpyzeMnXcXGSqt2s73ITxMVymN0zEZ1C4Anpw/AJaiVSrNMfH1EnQDjxqKzLv5yvapcZpuIbELAUXvHakjGy2w==" w:salt="BFb2UbZeOblFvDKa/dsT2w=="/ >

- потрібно його просто стерти, але не змінюючи інших, та зберегти

- змінюємо розширення файлу назад і отримаємо незахищений документ для подальшого опрацювання.


Скидання автоматично(макросом) Excel

Для книги:

Sub Unlock_Excel_Workbook()
    t = Timer
    If UnlockWorkbook(ActiveWorkbook) Then
        MsgBox "Захист знято. Витрачено часу: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не вдалось зняти захист з книги", vbCritical
    End If
End Sub
Function UnlockWorkbook(ByRef wb As Workbook) As Boolean
    Dim I%, j%, k%, l%, M%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For I = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For M = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(I) & Chr(j) & Chr(k) & Chr(l) & Chr(M) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            wb.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                UnlockWorkbook = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function 

Для аркуша:

Sub Unlock_Excel_Worksheet()
    t = Timer
    If UnlockSheet(ActiveSheet) Then
        MsgBox "Захист знято. Витрачено часу: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не вдалось зняти захист з аркуша", vbCritical
    End If
End Sub
Function UnlockSheet(ByRef sh As Worksheet) As Boolean
    Dim I%, j%, k%, l%, M%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For I = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For M = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(I) & Chr(j) & Chr(k) & Chr(l) & Chr(M) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            sh.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                UnlockSheet = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function 

Даний код знайдено на просторах інтернету давним-давно, але ще досі працює добре :-)


УВАГА

Дана стаття покликана для ознайомлення користувача із можливостями відновлення своїх файлів, тому прохання не зловживати даною інформацією!


view722like0dislike0 avatard_l4w clock 2017-08-09 19:09

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com