Я преподаватель, обучаю начальным азам информатики студентов, т.е начальные понятия для менеджеров, что такое Excel, как работать с электронными таблицами и т.д. Практическая работа - один вариант на всех. Поэтому, приходится проверять знания каждого студента по работе, как он делал одно, другое и т.д. Студенты могут просто скопировать работу друг у друга. Как бы сделать для каждого индивидуальный файл с пометкой, если этот файл будет скопирован, то я мог бы узнать. Сколько смотрю не могу найти решение. Автор, скрытый текст - все требует пароля на вход в файл, в моем случае студенты должны свободно редактировать все ячейки, за исключением ячейки с меткой, которая будет защищена от редактирования. Макрос использовать тоже не получится, т.к безопасность укажет, что макрос не запускать при открытии и все.
Aвторство, отслеживание изменений, защита и т.д.
22.11.2010 23:46:26
|
|
|
|
23.11.2010 00:07:02
Может через
ActiveWorkbook.BuiltinDocumentProperties("Manager").Value = "Petrov" попробовать? Макросом задать, макросом проверить? |
|
|
|
23.11.2010 00:09:40
Нет, manager не годится, его в свойствах видно...
|
|
|
|
23.11.2010 00:12:35
ActiveWorkbook.BuiltinDocumentProperties("Language").Value = "Ivanov"
? |
|
|
|
23.11.2010 00:19:46
Можно и макросом на суперскрытый лист писать историю изменений (и занести фамилию студента), а не включив макросы - не увидишь лист с заданием, которое нужно выполнить.
На вход в редактор поставить пароль. |
|
|
|
23.11.2010 00:36:08
{{/post}{/quote}
а вы смотрите кто файл создал и изменил думаю поможет, хотя и не от всех :){/post}{/quote} В компьютерном классе все пользователи User1 - как инкубаторские. |
|
|
|
23.11.2010 00:39:37
думал, hash, или сертификат, подписанный моей ЭЦП внедрить в ячейку, но как сделать чтобы он привязался к ячейке, а все остальные ячейки были свободны для ввода и редактирования.
Буду пробовать макросы, раз других вариантов нет. |
|
|
|
23.11.2010 00:41:00
{quote}{login=}{date=23.11.2010 12:36}{thema=Re: Re: }{post}{{/post}{/quote}
а вы смотрите кто файл создал и изменил думаю поможет, хотя и не от всех :){/post}{/quote} В компьютерном классе все пользователи User1 - как инкубаторские.{/post}{/quote} тогда только макросом, вариантов много
|
|||
|
|
23.11.2010 00:57:33
{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" End Sub Я этот макрос должен запускать или он сам выполняется при открытии файла? У меня при запуске выдает ошибку. |
|
|
|
23.11.2010 01:27:44
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 при запуске дальше ваша фантазия :)
|
|||
|
|
23.11.2010 01:52:49
Пока не могу понять. Почему нельзя использовать обычную парольную защиту? Или студенты сломают?
|
|
|
|
23.11.2010 03:44:08
Можно создать индивидуальные копии книг по количеству рабочих мест, в каждой копии установить скрытое имя, уникальное значение которого и проверять.
Пример макроса преподавателя как для установки, так и для контроля 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 В копиях книг при этом не нужны никакие макросы |
|
|
|
23.11.2010 03:51:22
Учтите только, что обойти можно копированием ячеек из книги "ботаника" в свою, но это тоже определенный навык, который заслуживает оценки :-)
Можно дополнительно защитить несколько ячеек листа паролем для усложнения копирования. |
|
|
|
23.11.2010 09:20:55
{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" End Sub Я этот макрос должен запускать или он сам выполняется при открытии файла? У меня при запуске выдает ошибку.{/post}{/quote} Ну это я сейчас как мысль закинул - прописать макросом в каждом именном файле фамилию студента в поле Language. Если студент принесёт чужую копию - то и это поле будет чужое, проверять можно тоже макросом Msgbox ActiveWorkbook.BuiltinDocumentProperties("Language").Value Как это будет работать на практике - не знаю... Но сейчас вижу, что на 2000 Экселе такого поля нет. А дома на 2007 отработало... |
|
|
|
24.11.2010 00:17:52
{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 моей рабочей станции, а не той на которой делалась работа. |
|
|
|
24.11.2010 00:22:47
{quote}{login=kim}{date=23.11.2010 01:52}{thema=}{post}Пока не могу понять. Почему нельзя использовать обычную парольную защиту? Или студенты сломают?{/post}{/quote}
Вот это я и хотел, но не знаю как сделать защиту на одну ячейку, у меня ставится только пароль на открытие всего файла, а как защитить ячейку? |
|
|
|
24.11.2010 00:25:21
{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: Сервис - Защита - Защитить лист. Предварительно следует выбрать ячейку/ячейки. |
|
|
|
24.11.2010 00:30:00
if [a1]<> ""then exit sub
*77677*
|
|||
|
|
24.11.2010 00:33:33
{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} Спасибо, этого вполне будет достаточно, я ступил - защищал книгу, а нужно было лист, не заметил раньше что есть выбор, или не там это делал. |
|
|
|
24.11.2010 00:40:13
{quote}{login=R Dmitry}{date=24.11.2010 12:30}{thema=}{post}if [a1]<> ""then exit sub
*77677*{/post}{/quote} думаю, проще будет защитить ячейку, в нее вписать каждому фамилию, а пароль на защиту брать через keepass - функцией копирования, если найдутся умники взломать, то я увеличу сложность пароля, keepass позволяет использовать и ключевой файл, если уж на то пошло, но думаю до этого не дойдет, никто взламывать не будет. |
|
|
|
24.11.2010 00:47:36
А подскажите как автоматом сделать создание нового файла в который в ячейку, например o1 - будет из списка вводиться фамилия студента. У меня десять групп по 20 студентов в каждой. Я до утра буду делать им файлы вручную.
|
|
|
|
24.11.2010 00:56:34
и нужно делать несколько защищенных ячеек, т.к студенты могут просто скопировать все, кроме защищенных ячеек из чужой книги в свою. Т.е они поймут, что просто файл не скопировать, но ячейки со сделанной работой можно легко скопировать. Поэтому придется выбирать что-нибудь другое из вышепредложенного или чего-нибудь еще нового.
|
|
|
|
24.11.2010 00:57:54
Создать один раз в этой ячейке выпадающий список :-))
Цикл по списку фамилий - занесение текущей фамилии в ячейку и сохранение копии файла под этим именем. |
|
|
|
24.11.2010 01:01:02
{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* |
|
|
|
24.11.2010 01:04:48
{quote}{login=Юрий М}{date=24.11.2010 12:57}{thema=}{post}Создать один раз в этой ячейке выпадающий список :-))
Цикл по списку фамилий - занесение текущей фамилии в ячейку и сохранение копии файла под этим именем.{/post}{/quote} Это здорово, только я не программист, работаю на уровне интерфейса и готового макроса. |
|
|
|
24.11.2010 01:08:43
Не совсем понятно из кучи Вашего цитирования. Мой безмакросный вариант подходит или нет?
|
||||
|
|
|||
Читают тему