кто знает как сломать файлы екселя с макросами.........точнее нада достать ответы к вопросам от 1С Бухгалтерии!
да ты прав полностью......пароли к макросам я уже вскрыл......а вот где там лежат ответы я не могу разобраться...... ктонить сталкивался с таким!?
А что сложно проверить условия ну типа Code: если это так тогда так иначе если это не так конецесли во блин называется привык к 1С Code: if это так так else не так endif Ну вообщем смысл я думаю понятен
Public StartTime As Long Public CurrentTime As Long Public TimeBeforeEnd As Long Public Const TimeLimit = 30 * 60 Private Sub ПредыдущийЛист() ' ' Макрос записан (Вася Пупкин) ' ' Проверяем, осталось ли еще время CurrentTime = Timer() TimeBeforeEnd = TimeLimit - (CurrentTime - StartTime) If TimeBeforeEnd <= 0 Then MsgBox ("Время экзамена истекло") UserForm1.CommandButton3.Enabled = False UserForm1.Show End If For i = 1 To ActiveWorkbook.Sheets.Count - 1 ActiveWorkbook.Sheets(i).Cells(1, 12).Value = Format(Int(TimeBeforeEnd / 60), "00") + ":" + Format(TimeBeforeEnd Mod 60, "00") Next i i = ActiveSheet.Index If (ActiveSheet.Index = 1) Then GoTo Out Else Sheets(ActiveSheet.Index - 1).Select End If Out: End Sub Private Sub СледующийЛист() ' ' Макрос записан (Вася Пупкин) ' ' Проверяем, осталось ли еще время CurrentTime = Timer() TimeBeforeEnd = TimeLimit - (CurrentTime - StartTime) If TimeBeforeEnd <= 0 Then MsgBox ("Время экзамена истекло") UserForm1.CommandButton3.Enabled = False UserForm1.Show End If For i = 1 To ActiveWorkbook.Sheets.Count - 1 ActiveWorkbook.Sheets(i).Cells(1, 12).Value = Format(Int(TimeBeforeEnd / 60), "00") + ":" + Format(TimeBeforeEnd Mod 60, "00") Next i ' If (ActiveSheet.Index >= Sheets.Count - 1) Then GoTo Out Else Sheets(ActiveSheet.Index + 1).Select End If Out: End Sub Private Sub Закончить() Dim Results(14) As String Dim Person(6) As String Dim Ans As String Results(0) = "Вопрос" + Chr(9) + "Ответ" With ActiveWorkbook.Sheets("Ответы") For i = 1 To ActiveWorkbook.Sheets.Count - 1 If .Cells(22, i + 1).Value = "" Then Ans = "НЕТ" Else Ans = Format(.Cells(22, i + 1).Value, "0") End If Results(i) = Format(.Cells(21, i + 1), " 0000") + Chr(9) + " " + Ans Next Person(0) = .Cells(2, 3).Value Person(1) = .Cells(3, 3).Value Person(2) = .Cells(4, 3).Value Person(3) = "" Person(4) = "Задание N" + Format(.Cells(1, 3).Value, "000000") Person(5) = "Код АЦС " + .Cells(16, 3).Value Person(6) = "Дата " + Format(.Cells(18, 2).Value, "Short date") UserForm1.Person.List = Person 'Chr(10) + .Cells(3, 3).Value + Chr(10) + _ '.Cells(4, 3).Value Chr(10) + "Код АЦС " + .Cells(16, 3).Value + Chr(10) _ '+ "Дата " + .Cells(17, 3).Value UserForm1.Caption = "1C:Профессионал. Задание N" + Format(.Cells(1, 3).Value, "000000") End With UserForm1.Results.List = Results UserForm1.Show End Sub Private Sub Autpen() Dim Person As String With ActiveWorkbook.Sheets("Ответы") Person = .Cells(2, 3).Value + " " + .Cells(3, 3).Value + " " + .Cells(4, 3).Value UserForm2.Caption = "1C:Профессионал. Версия " + CStr(.Cells(1, 6)) + _ " Задание N" + Format(.Cells(1, 3).Value, "000000") End With UserForm2.Person.Caption = Person UserForm2.Show End Sub нихчего не могу понять.....где могут лежать пароли!
Вот дополнение к твоему куску Из модуля формы UserForm1 Code: 'Проверка ответов N = 0 For i = 2 To ActiveWorkbook.Sheets.Count A = ActiveSheet.Cells(20, i) B = ActiveSheet.Cells(22, i) C = ActiveSheet.TextBoxNum.Value If (((A * B) + (A + B + B)) * C) = ActiveSheet.Cells(24, i) Then 'Cells(24 +1 26.08.04 ActiveSheet.Cells(24, i).Value = "+" N = N + 1 Else ActiveSheet.Cells(24, i).Value = "-" End If Next ActiveSheet.Cells(25, 2).Value = N If (N >= CDec(ActiveSheet.TextBoxOtv.Value)) Then ActiveSheet.Cells(26, 1).Value = "Тест СДАН" Else ActiveSheet.Cells(26, 1).Value = "Тест НЕ СДАН" End If Расчет правильных ответов идет примерно так В цикле Проверяются строки 20 и 22 начиная со второй колонки (листа ответы) Вот если это выражение Code: (((A * B) + (A + B + B)) * C) = ActiveSheet.Cells(24, i) тогда ответ правильный
Все что заключено в # добавил я Начнем ломать!!!!!!!! ****************************************************************************************************************** В модуле формы UserForm2 после 'Устанавливаем время Переделываем строку If (ActiveWorkbook.Sheets("Ответы").Cells(18, 3).Value = "") Then В # If (ActiveWorkbook.Sheets("Ответы").Cells(18, 3).Value = "") Or (ActiveWorkbook.Sheets("Ответы").Cells(18, 3).Value <> "") Then # Для того чтобы не было ругани насчет того что несколько раз проходить один и тот-же тест нельзя ****************************************************************************************************************** ****************************************************************************************************************** Дальше В модуле формы UserForm1 после C = ActiveSheet.TextBoxNum.Value добавляем # H = ActiveSheet.Cells(24, I) # Затем после If (((A * B) + (A + B + B)) * C) = ActiveSheet.Cells(24, I) Then 'Cells(24 +1 26.08.04 ActiveSheet.Cells(24, I).Value = "+" N = N + 1 Else ActiveSheet.Cells(24, I).Value = "-" End If Добавим # J = (H / C - A) / (A + 2) ' Вот собственно формула обратного расчета т.е J должна быть = правильному ответу ActiveSheet.Cells(29, I) = J ' Собственно здесь в цикле в каждую ячейку 29 строки листа "ответы" добавляем правильный ответ # Вобщем во время прохождения теста можно и не отвечать на вопросы, ответы все равно будут проставлены, только при условии что в 24 строке стоят цифры, а ни минусы или плюсы После коментируем строку ActiveWorkbook.Save Должно получиться 'ActiveWorkbook.Save Это чтобы после окончания теста результаты не сохранялись ****************************************************************************************************************** Теперь самое важное С листа "ответы" в обязательном порядке нужно снять защиту чтобы ответы могли проставится в 29 строке Да и еще значение "С" мне впринципе больше и не нужно. гыыыыыыыы ))))))))))))))))))))) ****************************************************************************************************************** Ну вот и все удачного взлома)))))))))))))))))))))) ******************************************************************************************************************