Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не пускать в файл excel больше 1 человека - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Не пускать в файл excel больше 1 человека
otpbnvem Дата: Воскресенье, 02.02.2025, 10:35 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: -12 ±
Замечаний: 40% ±

2148
Есть код предоставленный мне пользователем 2version

Он работает так что если в файле кто-то есть, второй пользователь уже зайти не сможет. Но есть один нюанс, если второй пользователь заходит в файл ему выдаётся сообщение что в файле кто-то есть и файл закрывается, но и при этом удаляется файл lock.txt, при этом первый пользователь работает в файле и ещё его не закрыл. В общем код срабатывает только раз скажем так.

Как сделать так чтобы тот кто его открыл и создал lock.txt тот и удалит при закрытие?

Понимаю вопрос сложный но всё же может как то можно!

[vba]
Код

Private Sub Workbook_Open()
Dim lockFile As String
lockFile = ThisWorkbook.Path & "\lock.txt"

' Проверяем, существует ли файл lock.txt
If Dir(lockFile) <> "" Then
MsgBox "Файл уже открыт другим пользователем!", vbExclamation, "Доступ запрещен"
ThisWorkbook.Close False
Exit Sub
End If

' Создаем lock-файл
Open lockFile For Output As #1
Print #1, "Locked"
Close #1
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Удаляем lock-файл при закрытии книги
On Error Resume Next
Kill ThisWorkbook.Path & "\lock.txt"
On Error GoTo 0
End Sub
[/vba]


От и ПБ

Сообщение отредактировал otpbnvem - Воскресенье, 02.02.2025, 12:38
 
Ответить
СообщениеЕсть код предоставленный мне пользователем 2version

Он работает так что если в файле кто-то есть, второй пользователь уже зайти не сможет. Но есть один нюанс, если второй пользователь заходит в файл ему выдаётся сообщение что в файле кто-то есть и файл закрывается, но и при этом удаляется файл lock.txt, при этом первый пользователь работает в файле и ещё его не закрыл. В общем код срабатывает только раз скажем так.

Как сделать так чтобы тот кто его открыл и создал lock.txt тот и удалит при закрытие?

Понимаю вопрос сложный но всё же может как то можно!

[vba]
Код

Private Sub Workbook_Open()
Dim lockFile As String
lockFile = ThisWorkbook.Path & "\lock.txt"

' Проверяем, существует ли файл lock.txt
If Dir(lockFile) <> "" Then
MsgBox "Файл уже открыт другим пользователем!", vbExclamation, "Доступ запрещен"
ThisWorkbook.Close False
Exit Sub
End If

' Создаем lock-файл
Open lockFile For Output As #1
Print #1, "Locked"
Close #1
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Удаляем lock-файл при закрытии книги
On Error Resume Next
Kill ThisWorkbook.Path & "\lock.txt"
On Error GoTo 0
End Sub
[/vba]

Автор - otpbnvem
Дата добавления - 02.02.2025 в 10:35
m260190 Дата: Воскресенье, 02.02.2025, 11:54 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Извините. В какой теме выложен этот код? http://www.excelworld.ru/forum/2-54151-1


Сообщение отредактировал m260190 - Воскресенье, 02.02.2025, 11:57
 
Ответить
СообщениеИзвините. В какой теме выложен этот код? http://www.excelworld.ru/forum/2-54151-1

Автор - m260190
Дата добавления - 02.02.2025 в 11:54
otpbnvem Дата: Воскресенье, 02.02.2025, 11:59 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: -12 ±
Замечаний: 40% ±

2148


От и ПБ
 
Ответить
Сообщениеm260190, http://www.excelworld.ru/forum/2-54151-1

Автор - otpbnvem
Дата добавления - 02.02.2025 в 11:59
Pelena Дата: Воскресенье, 02.02.2025, 14:42 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19437
Репутация: 4572 ±
Замечаний: ±

Excel 365 & Mac Excel
Лишние посты, не относящиеся к теме удалила


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЛишние посты, не относящиеся к теме удалила

Автор - Pelena
Дата добавления - 02.02.2025 в 14:42
Hugo Дата: Воскресенье, 02.02.2025, 15:50 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3745
Репутация: 797 ±
Замечаний: 0% ±

365
otpbnvem, добавьте публичную переменную, которую задавайте при открытии если файл занят, и используйте при закрытии.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Воскресенье, 02.02.2025, 15:56
 
Ответить
Сообщениеotpbnvem, добавьте публичную переменную, которую задавайте при открытии если файл занят, и используйте при закрытии.

Автор - Hugo
Дата добавления - 02.02.2025 в 15:50
bmv98rus Дата: Воскресенье, 02.02.2025, 17:22 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4141
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Hugo, при всем уважении, что за бред? Переменная доступна только для сессии конкретного пользователя.
Если держать это в ячейке, то нужно сразу записать после смены, при этом по том при закрытии без сохранения - имеем вариант, когда нет доступа к файлу ни у кого, без определенного шаманства.
Хотя я не уверен что и вариант с флагом в виде файла рабочий на 100%.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеHugo, при всем уважении, что за бред? Переменная доступна только для сессии конкретного пользователя.
Если держать это в ячейке, то нужно сразу записать после смены, при этом по том при закрытии без сохранения - имеем вариант, когда нет доступа к файлу ни у кого, без определенного шаманства.
Хотя я не уверен что и вариант с флагом в виде файла рабочий на 100%.

Автор - bmv98rus
Дата добавления - 02.02.2025 в 17:22
Hugo Дата: Воскресенье, 02.02.2025, 17:37 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3745
Репутация: 797 ±
Замечаний: 0% ±

365
bmv98rus, не спешите. Нам и нужно для одного пользователя - ведь если он при открытии файла получил отказ - то он не имеет права при закрытии удалять файл.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщениеbmv98rus, не спешите. Нам и нужно для одного пользователя - ведь если он при открытии файла получил отказ - то он не имеет права при закрытии удалять файл.

Автор - Hugo
Дата добавления - 02.02.2025 в 17:37
bigor Дата: Воскресенье, 02.02.2025, 17:42 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 1328
Репутация: 253 ±
Замечаний: 0% ±

нет
Предлагаю создавать файл уникальный для каждого пользователя но с общим началом, типа lock_UserName или lock_датавремя
открытие проверяем по наличии файла lock*, а закрывает каждый свой, с проверкой на наличие


Сообщение отредактировал bigor - Воскресенье, 02.02.2025, 17:43
 
Ответить
СообщениеПредлагаю создавать файл уникальный для каждого пользователя но с общим началом, типа lock_UserName или lock_датавремя
открытие проверяем по наличии файла lock*, а закрывает каждый свой, с проверкой на наличие

Автор - bigor
Дата добавления - 02.02.2025 в 17:42
astepaaa Дата: Воскресенье, 02.02.2025, 17:43 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

365 RUS
bmv98rus, Hugo, Тут Hugo прав, лично проверил работает, я запускаю файл, создаётся файл, и если запустить workbook_open через VBA уже получаешь отказ что файл занят и всё это на одном ПК происходит, пока не тестил на двух ПК!!! Точно не знаю что получится...
 
Ответить
Сообщениеbmv98rus, Hugo, Тут Hugo прав, лично проверил работает, я запускаю файл, создаётся файл, и если запустить workbook_open через VBA уже получаешь отказ что файл занят и всё это на одном ПК происходит, пока не тестил на двух ПК!!! Точно не знаю что получится...

Автор - astepaaa
Дата добавления - 02.02.2025 в 17:43
astepaaa Дата: Воскресенье, 02.02.2025, 17:44 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

365 RUS
bigor, Интересно было бы взглянуть на код, и как это вообще будет работать если файл лежит не в общим доступе а на облаке, написано же!
 
Ответить
Сообщениеbigor, Интересно было бы взглянуть на код, и как это вообще будет работать если файл лежит не в общим доступе а на облаке, написано же!

Автор - astepaaa
Дата добавления - 02.02.2025 в 17:44
astepaaa Дата: Воскресенье, 02.02.2025, 17:46 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

365 RUS
Вот, чуть добавил кода для нормального закрытия файла, вроде работает нормально!
К сообщению приложен файл: 0597204.xlsm (14.8 Kb)
 
Ответить
СообщениеВот, чуть добавил кода для нормального закрытия файла, вроде работает нормально!

Автор - astepaaa
Дата добавления - 02.02.2025 в 17:46
astepaaa Дата: Воскресенье, 02.02.2025, 17:49 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

365 RUS
bigor, Не думаю что это будет работать!!!


Сообщение отредактировал astepaaa - Воскресенье, 02.02.2025, 17:52
 
Ответить
Сообщениеbigor, Не думаю что это будет работать!!!

Автор - astepaaa
Дата добавления - 02.02.2025 в 17:49
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!