Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 18.11.2019, 15:10   #1
DMITRIY_78
Форумчанин
 
Регистрация: 11.12.2018
Сообщений: 103
По умолчанию ввод пароля из текстового файла

Ребята! не судите строго но как смог придумать тему так и навоял, может кто поможет:
суть моего кода такой маневр:
при файла XL запускается :
1. формируется файл pass.txt в котором
2. запускается генератор, формирует строку с паролем
3. строка записывается в память переменной Spp
в InputBox вводится пароль из файла pass.txt в ручную

и при каждом открывании файла генератор формирует новый пароль
и записывается в файл pass.txt

загвоздка в том что при каждом открытии файла pass.txt запись
остается одна и та же. а по замыслу генератор должен формировать разную строку в текстовом файле
1. работа генератора функции
Код:
Public Function генератор(Optional Lenght As Integer = 8)
    For S = 1 To Lenght
        choice = Int(Rnd * 3)
        If choice = 0 Then
            nextsymbol = Int(Rnd * 9)
        End If
        If choice = 1 Then
            nextsymbol = Chr(Int((90 - 65 + 1) * Rnd + 65))
        End If
        If choice = 2 Then
            nextsymbol = Chr(Int((122 - 97 + 1) * Rnd + 97))
        End If
        PassTxt = PassTxt & nextsymbol
    Next S
    генератор = PassTxt
End Function
2. создание/запись в текстовый файл
Код:
Sub записьфайл()
    Spp = генератор 'ЗАНОШУ ДАННЫЕ В ПЕРЕМЕННУЮ
Dim ff As Integer
'Получаем свобод номер для открываемого файла
ff = FreeFile
'создаем файл для чтения и записи
Open ThisWorkbook.Path & "\pass.txt" For Output As ff
'Записываем в файл
Write #ff, Spp
'Закрываем файл
Close ff
End Sub
3. Проверка пароля
Код:
Private Sub Workbook_Open() 'проверка пароля
Call записьфайл
ActiveWorkbook.Windows(1).Visible = False
Dim password As String
Do
If PassCorr Then Exit Sub
        password = InputBox("Доступ по паролю: генератор сформировал  пароль", "Сообщение")
If StrPtr(password) = 0 Then 'если нажата кнопка отмена
    MsgBox "Нажата кнопка Отмена.", vbExclamation, "Сообщение"
'========== закрываем приложение
        sName = "ПЕРЕОФОРМЛЕНИЕ.xlsm"
            Workbooks(sName).Close
                Documents.Close wdDoNotSaveChanges
'=============
Exit Do
ElseIf password = "" Then 'проверка поля на наличие значения пусто
    MsgBox "Поле пароля имеет значение ПУСТО, повторите ввод пароля!", vbCritical, "Сообщение"

ElseIf password = Spp Then 'ПРОВЕРКА ПРАВИЛЬНОСТИ ПАРОЛЯ
'========== цикл для отображение всех листов
For Each wb In Workbooks
  For Each w In wb.Windows
      w.Visible = True
  Next
Next
Sheets("0000").Select
Exit Sub

'====
ElseIf password = "911" Then
        MsgBox " ПОЗДРАВЛЯЕМ!", 16, "Важная информация"
        .........................
        Exit Sub
Exit Do
'====
Else
    MsgBox "Пароль" & " - " & password & " - " & ", НЕ ВЕРНЫЙ, " & vbCrLf & _
    "нажмите кнопку ОТМЕНА !", vbInformation, "Сообщение"
End If
Loop
End Sub

Последний раз редактировалось DMITRIY_78; 18.11.2019 в 15:26.
DMITRIY_78 вне форума Ответить с цитированием
Старый 18.11.2019, 15:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

Цитата:
Сообщение от DMITRIY_78 Посмотреть сообщение
загвоздка в том что при каждом открытии файла pass.txt запись
остается одна и та же. а по замыслу генератор должен формировать разную строку в текстовом файле
а где и когда Вы вызываете записьфайл() ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2019, 15:31   #3
DMITRIY_78
Форумчанин
 
Регистрация: 11.12.2018
Сообщений: 103
По умолчанию

п 3.
кода открываю файл xl
Код:
Private Sub Workbook_Open() 'проверка пароля
Call записьфайл
.....
DMITRIY_78 вне форума Ответить с цитированием
Старый 18.11.2019, 15:44   #4
DMITRIY_78
Форумчанин
 
Регистрация: 11.12.2018
Сообщений: 103
По умолчанию

если напрямую запускать записьфайл() все нормально
может в закрытие файла xl поместить
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
хрень не получается

Последний раз редактировалось DMITRIY_78; 18.11.2019 в 15:47.
DMITRIY_78 вне форума Ответить с цитированием
Старый 18.11.2019, 16:26   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

Цитата:
Сообщение от DMITRIY_78 Посмотреть сообщение
кода открываю файл xl
Код:
Private Sub Workbook_Open() 'проверка пароля
Call записьфайл
этой строчки в коде в сообщении изначально не было, вы ещё добавили потом.

ну ладно.

не смотрел, что происходит, а какой в этой схеме смысл.
Перед открытием книги сгенерировать новый пароль, записать его в файл и потом ждать его ввода?
Зачем это всё надо?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2019, 16:32   #6
DMITRIY_78
Форумчанин
 
Регистрация: 11.12.2018
Сообщений: 103
По умолчанию

так я когда отвечал на ваш вопрос скопировал с сайта странички этот код..ну да ладно, вы правы , правы, да, именно ввод пароля из текстового файла в ручную, это так для себя хотел, другой человек не знает что таким образом формируется новый пароль каждый раз
DMITRIY_78 вне форума Ответить с цитированием
Старый 18.11.2019, 16:36   #7
DMITRIY_78
Форумчанин
 
Регистрация: 11.12.2018
Сообщений: 103
По умолчанию

если пускаю stop - F8. все работает как надо
а по нормальному нифига
DMITRIY_78 вне форума Ответить с цитированием
Старый 18.11.2019, 16:37   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

во-первых, банальное отключение макросов в настройках MS Excel полностью отключит вашу "парольную защиту"

во-вторых, приведённый код НЕ РАБОЧИЙ
Цитата:
Сообщение от DMITRIY_78 Посмотреть сообщение
If PassCorr Then Exit Sub
откуда взялась необъявленная и не иницилизированная переменная PassCorr?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2019, 16:41   #9
DMITRIY_78
Форумчанин
 
Регистрация: 11.12.2018
Сообщений: 103
По умолчанию

сдается мне что из памяти переменной не удаляется запись первоночальная
DMITRIY_78 вне форума Ответить с цитированием
Старый 18.11.2019, 16:43   #10
DMITRIY_78
Форумчанин
 
Регистрация: 11.12.2018
Сообщений: 103
По умолчанию

да это лишнее убрал но код работает, у меня как то работает,
DMITRIY_78 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
-программа в которой ввод осуществляется из текстового файла и вывод выполняется в текстовый файл; CeBpIk Помощь студентам 0 12.12.2016 21:46
Помощь с Pascal. Ввод инфы из текстового файла в массив указателей Casha12 Помощь студентам 6 05.05.2016 18:05
Ввод с текстового файла faiter_on Паскаль, Turbo Pascal, PascalABC.NET 3 25.12.2014 17:55
Ввод из текстового файла bygoga Паскаль, Turbo Pascal, PascalABC.NET 14 23.11.2008 14:37