yurybx
@yurybx
системный администратор

Совместное редактирование текста с рабочих станций домена Active Directory без облака?

Ищу элегантное решение, которое позволило бы в условиях доменной сети реализовать возможность совместного редактирования текстовых документов (можно даже без форматирования). Дело в том, что я не хочу создавать учётные записи в облаке, не хочу поднимать Share Point и не хочу усложнять сотрудникам жизнь, объясняя, как запускать серверную часть в плагине NotePad++. У сотрудников есть доменные учётные записи, под которыми они залогинены в своих рабочих станциях, у каждого отдела есть своя сетевая папка, к которой есть доступ только у сотрудников этого отдела. Я хочу положить в эти папки некие файлы, которые сотрудники смогут редактировать одновременно и оперативно видеть изменения, вносимые коллегами. То-есть, некий редактор должен уметь оперативно обмениваться информацией о вносимых изменениях с другими своими экземплярами через служебные файлы в общей сетевой папке. Существует ли такой в природе?
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
yurybx
@yurybx Автор вопроса
системный администратор
Не найдя подходящего решения, я пошёл на компромисс: положил в сетевую папку docm-файл, в который добавил макрос, закрывающий документ по таймауту простоя. При такой схеме одновременное редактирование документа невозможно, зато становится возможным редактировать его поочерёдно. Поясню: в обычной ситуации часто бывает так, что кто-то из сотрудников открыл документ и оставил его в таком состоянии, из-за чего другие сотрудники не могут его редактировать. Макрос исключает такую ситуацию: если над документом не выполняется никаких действий в течение 60 секунд, то он сохраняет и закрывает документ. Также макрос добавляет метку даты и имени пользователя для каждого нового абзаца.
Const interval As Double = 3 ' seconds
Dim prevSelStart As Long
Dim prevSelEnd As Long
Dim timer As Long
Const timeout As Double = 60 ' seconds

Sub AutoOpen()
    selStart = 0
    selEnd = 0
    timer = 0
    Application.OnTime When:=DateAdd("s", interval, Now), Name:="Service", Tolerance:=1
End Sub

Sub Service()

    If Selection.Paragraphs(1).Range.ComputeStatistics(wdStatisticWords) > 0 And _
        Selection.Paragraphs(1).Range.Characters(1) <> "[" Then
        Selection.Paragraphs(1).Range.InsertBefore ("[" & Application.UserName & " " & Date & "] ")
    End If
    
    If Selection.Start = prevSelStart And Selection.End = prevSelEnd Then
        timer = timer + interval
    Else
        timer = 0
        prevSelStart = Selection.Start
        prevSelEnd = Selection.End
    End If
    
    If timer >= timeout Then
        ThisDocument.Close SaveChanges:=wdSaveChanges
    End If
    
    Application.OnTime When:=DateAdd("s", interval, Now), Name:="Service", Tolerance:=1
    
End Sub
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы