Страницы: 1 2 След.
RSS
Aвторство, отслеживание изменений, защита и т.д.
 
Я преподаватель, обучаю начальным азам информатики студентов, т.е начальные понятия для менеджеров, что такое Excel, как работать с электронными таблицами и т.д. Практическая работа - один вариант на всех. Поэтому, приходится проверять знания каждого студента по работе, как он делал одно, другое и т.д. Студенты могут просто скопировать работу друг у друга. Как бы сделать для каждого индивидуальный файл с пометкой, если этот файл будет скопирован, то я мог бы узнать. Сколько смотрю не могу найти решение. Автор, скрытый текст - все требует пароля на вход в файл, в моем случае студенты должны свободно редактировать все ячейки, за исключением ячейки с меткой, которая будет защищена от редактирования. Макрос использовать тоже не получится, т.к безопасность укажет, что макрос не запускать при открытии и все.
 
Была мысль сделать тесты в Excel, но пока не взялся. Идея такая. Вопросы и варианты ответов пермешиваются в случайном порядке (естественно, ответы из разных вопросов к одному не попадают :) ), код этого перемешивания (т.е. что куда переместилось) остается только в файле преподавателя. Оценка выставляется После тесной работы проверяющего и проверяемого файла :)
 
В моем случае все проще, практическая работа к ней есть методичка, и студенты должны каждый сделать одно и тоже по написанным пунктам,  но самостоятельно. Варианты, ответы, это для обучения программистов, а у нас лишь бы попробовали, но попробовать должен каждый, а не скопировать сделанный файл у соседа.
 
Может через  
ActiveWorkbook.BuiltinDocumentProperties("Manager").Value = "Petrov"  
попробовать?  
Макросом задать, макросом проверить?
 
Нет, manager не годится, его в свойствах видно...
 
ActiveWorkbook.BuiltinDocumentProperties("Language").Value = "Ivanov"  
?
 
{quote}{login=krserv}{date=22.11.2010 11:46}{thema=Aвторство, отслеживание изменений,  защита и т.д.}{post}Макрос использовать тоже не получится, т.к безопасность укажет, что макрос не запускать при открытии и все.{/post}{/quote}  
Не все. Вы же сделаете так, что без работы макроса все нужные листы будут скрыты, а на единственном не будет ничего, кроме фиги. Ну, или если это непедагогически - фигового листочка :)
 
{quote}{login=}{date=23.11.2010 12:01}{thema=}{post}В моем случае все проще, практическая работа к ней есть методичка, и студенты должны каждый сделать одно и тоже по написанным пунктам,  но самостоятельно. Варианты, ответы, это для обучения программистов, а у нас лишь бы попробовали, но попробовать должен каждый, а не скопировать сделанный файл у соседа.{/post}{/quote}  
а вы смотрите кто файл создал и изменил  
думаю поможет, хотя и не от всех :)
Спасибо
 
Можно и макросом на суперскрытый лист писать историю изменений (и занести фамилию студента), а не включив макросы - не увидишь лист с заданием, которое нужно выполнить.  
На вход в редактор поставить пароль.
 
{{/post}{/quote}  
а вы смотрите кто файл создал и изменил  
думаю поможет, хотя и не от всех :){/post}{/quote}  
 
В компьютерном классе все пользователи User1 - как инкубаторские.
 
думал, hash, или сертификат, подписанный моей ЭЦП внедрить в ячейку, но как сделать чтобы он привязался к ячейке, а все остальные ячейки были свободны для ввода и редактирования.  
Буду пробовать макросы, раз других вариантов нет.
 
{quote}{login=}{date=23.11.2010 12:36}{thema=Re: Re: }{post}{{/post}{/quote}  
а вы смотрите кто файл создал и изменил  
думаю поможет, хотя и не от всех :){/post}{/quote}  
 
В компьютерном классе все пользователи User1 - как инкубаторские.{/post}{/quote}  
тогда только  макросом, вариантов много
Спасибо
 
{quote}{login=Hugo}{date=23.11.2010 12:12}{thema=}{post}ActiveWorkbook.BuiltinDocumentProperties("Language").Value = "Ivanov"  
?{/post}{/quote}  
 
Sub Макрос1()  
ActiveWorkbook.BuiltinDocumentProperties("Language").Value = "Ivanov"  
Print  
 
End Sub  
 
Я этот макрос должен запускать или он сам выполняется при открытии файла?  
У меня при запуске выдает ошибку.
 
Option Explicit  
   
Sub Test()  
   Dim wsh As Object  
   Dim RegEx As Object, RegM As Object  
   Dim FSO As Object, fil As Object  
   Dim ts As Object, txtAll As String, TempFil As String  
   Set wsh = CreateObject("WScript.Shell")  
   Set FSO = CreateObject("Scripting.FileSystemObject")  
   Set RegEx = CreateObject("vbscript.regexp")  
   TempFil = "C:\myip.txt"  
 
   wsh.Run "%comspec% /c ipconfig > " & TempFil, 0, True  
   With RegEx  
       .Pattern = "(\d{1,3}\.){3}\d{1,3}"  
       .Global = False  
   End With  
   Set fil = FSO.GetFile(TempFil)  
 
   Set ts = fil.OpenAsTextStream(1)  
   txtAll = ts.ReadAll  
   Set RegM = RegEx.Execute(txtAll)  
 
   ActiveSheet.Range("A1").Value = RegM(0)  
   ActiveSheet.Range("A1").EntireColumn.AutoFit  
   ts.Close  
 
   Kill TempFil  
       
   Set ts = Nothing  
   Set wsh = Nothing  
   Set fil = Nothing  
   Set FSO = Nothing  
   Set RegM = Nothing  
   Set RegEx = Nothing  
End Sub  
выведет ip в А1 при запуске дальше ваша фантазия :)
Спасибо
 
Пока не могу понять. Почему нельзя использовать обычную парольную защиту? Или студенты сломают?
 
Можно создать индивидуальные копии книг по количеству рабочих мест, в каждой копии установить скрытое имя, уникальное значение которого и проверять.  
 
Пример макроса преподавателя как для установки, так и для контроля ID активной книги. Макрос может быть сохранен в книге макросов PERSONAL преподавателя.  
 
Sub GetSetID()  
 Dim IdOld$, IdNew$  
 On Error Resume Next  
 With ActiveWorkbook  
   IdOld = Evaluate(.Names("ID").RefersTo)  
   IdNew = InputBox("Введите ID, Esc - отмена", "Идентификатор", IdOld)  
   If Len(IdNew) > 0 Then  
     .Names.Add Name:="ID", RefersTo:="=" & """" & IdNew & """", Visible:=False  
     MsgBox "Новый ID " & .Names("ID").RefersTo  
   End If  
 End With  
End Sub  
 
В копиях книг при этом не нужны никакие макросы
 
Учтите только, что обойти можно копированием ячеек из книги "ботаника" в свою, но это тоже определенный навык, который заслуживает оценки :-)  
Можно дополнительно защитить несколько ячеек листа паролем для усложнения копирования.
 
{quote}{login=}{date=23.11.2010 12:57}{thema=Re: }{post}{quote}{login=Hugo}{date=23.11.2010 12:12}{thema=}{post}ActiveWorkbook.BuiltinDocumentProperties("Language").Value = "Ivanov"  
?{/post}{/quote}  
 
Sub Макрос1()  
ActiveWorkbook.BuiltinDocumentProperties("Language").Value = "Ivanov"  
Print  
 
End Sub  
 
Я этот макрос должен запускать или он сам выполняется при открытии файла?  
У меня при запуске выдает ошибку.{/post}{/quote}  
 
Ну это я сейчас как мысль закинул - прописать макросом в каждом именном файле фамилию студента в поле Language. Если студент принесёт чужую копию - то и это поле будет чужое, проверять можно тоже макросом  
Msgbox ActiveWorkbook.BuiltinDocumentProperties("Language").Value  
Как это будет работать на практике - не знаю...  
Но сейчас вижу, что на 2000 Экселе такого поля нет. А дома на 2007 отработало...
 
{quote}{login=R Dmitry}{date=23.11.2010 01:27}{thema=Re: Re: }{post}Option Explicit  
   
Sub Test()  
   Dim wsh As Object  
   Dim RegEx As Object, RegM As Object  
   Dim FSO As Object, fil As Object  
   Dim ts As Object, txtAll As String, TempFil As String  
   Set wsh = CreateObject("WScript.Shell")  
   Set FSO = CreateObject("Scripting.FileSystemObject")  
   Set RegEx = CreateObject("vbscript.regexp")  
   TempFil = "C:\myip.txt"  
 
   wsh.Run "%comspec% /c ipconfig > " & TempFil, 0, True  
   With RegEx  
       .Pattern = "(\d{1,3}\.){3}\d{1,3}"  
       .Global = False  
   End With  
   Set fil = FSO.GetFile(TempFil)  
 
   Set ts = fil.OpenAsTextStream(1)  
   txtAll = ts.ReadAll  
   Set RegM = RegEx.Execute(txtAll)  
 
   ActiveSheet.Range("A1").Value = RegM(0)  
   ActiveSheet.Range("A1").EntireColumn.AutoFit  
   ts.Close  
 
   Kill TempFil  
       
   Set ts = Nothing  
   Set wsh = Nothing  
   Set fil = Nothing  
   Set FSO = Nothing  
   Set RegM = Nothing  
   Set RegEx = Nothing  
End Sub  
выведет ip в А1 при запуске дальше ваша фантазия :){/post}{/quote}  
 
Спасибо за макрос, буду пробовать, единственное неудобство нет возможности привязки к студенту, студента нужно привязывать к раб. станции с IP  
И еще, они сбрасывают на сетевой диск свои работы, приходят на мое рабочее место и открывают у меня свой файл. При проверки мною на одной рабочей станции у меня всегда будет показывать IP моей рабочей станции, а не той на которой делалась работа.
 
{quote}{login=kim}{date=23.11.2010 01:52}{thema=}{post}Пока не могу понять. Почему нельзя использовать обычную парольную защиту? Или студенты сломают?{/post}{/quote}  
 
Вот это я и хотел, но не знаю как сделать защиту на одну ячейку, у меня ставится только пароль на открытие всего файла, а как  защитить ячейку?
 
{quote}{login=}{date=24.11.2010 12:22}{thema=Re: }{post}{quote}{login=kim}{date=23.11.2010 01:52}{thema=}{post}{/post}{/quote} как  защитить ячейку?{/post}{/quote}  
2003: Сервис - Защита - Защитить лист. Предварительно следует выбрать ячейку/ячейки.
 
if [a1]<> ""then exit sub
 
 
*77677*
Спасибо
 
{quote}{login=Юрий М}{date=24.11.2010 12:25}{thema=Re: Re: }{post}{quote}{login=}{date=24.11.2010 12:22}{thema=Re: }{post}{quote}{login=kim}{date=23.11.2010 01:52}{thema=}{post}{/post}{/quote} как  защитить ячейку?{/post}{/quote}  
2003: Сервис - Защита - Защитить лист. Предварительно следует выбрать ячейку/ячейки.{/post}{/quote}  
 
Спасибо, этого вполне будет достаточно, я ступил - защищал книгу, а нужно было лист, не заметил раньше что есть выбор, или не там это делал.
 
{quote}{login=R Dmitry}{date=24.11.2010 12:30}{thema=}{post}if [a1]<> ""then exit sub
 
 
*77677*{/post}{/quote}  
 
думаю, проще будет защитить ячейку, в нее вписать каждому фамилию, а пароль на защиту брать через keepass - функцией копирования, если найдутся умники взломать, то я увеличу сложность пароля, keepass позволяет использовать и ключевой файл, если уж на то пошло, но думаю до этого не дойдет, никто взламывать не будет.
 
А подскажите как автоматом сделать создание нового файла в который в ячейку, например o1 - будет из списка вводиться фамилия студента. У меня десять групп по 20 студентов в каждой. Я до утра буду делать им файлы вручную.
 
и нужно делать несколько защищенных ячеек, т.к студенты могут просто скопировать все, кроме защищенных ячеек из чужой книги в свою. Т.е они поймут, что просто файл не скопировать, но ячейки со сделанной работой можно легко скопировать. Поэтому придется выбирать что-нибудь другое из вышепредложенного или чего-нибудь еще нового.
 
Создать один раз в этой ячейке выпадающий список :-))  
Цикл по списку фамилий - занесение текущей фамилии в ячейку и сохранение копии файла под этим именем.
 
{quote}{login=}{date=24.11.2010 12:40}{thema=Re: }{post}{quote}{login=R Dmitry}{date=24.11.2010 12:30}{thema=}{post}if [a1]<> ""then exit sub
 
 
*77677*{/post}{/quote}  
 
не понял что это? Проверка по IP? что такое *77677*
 
{quote}{login=Юрий М}{date=24.11.2010 12:57}{thema=}{post}Создать один раз в этой ячейке выпадающий список :-))  
Цикл по списку фамилий - занесение текущей фамилии в ячейку и сохранение копии файла под этим именем.{/post}{/quote}  
 
Это здорово, только я не программист, работаю на уровне интерфейса и готового макроса.
 
Не совсем понятно из кучи Вашего цитирования. Мой безмакросный вариант подходит или нет?
Страницы: 1 2 След.
Читают тему
Наверх