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

Вход

Регистрация

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

 

= Мир MS Excel/Реализовать многопользовательский доступ к файлу с макросами - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Реализовать многопользовательский доступ к файлу с макросами
Serge_007 Дата: Понедельник, 10.04.2023, 14:58 | Сообщение № 1
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Всем привет

Впервые столкнулся с такой проблемой, пытаясь реализовать архитектуру многопользовательского доступа к макросам, хранящимся в одной книге
Структура такова:


Поясню. В файле с макросами (буду называть его "Главный файл") куча кода "на все случаи жизни". В файлах пользователей только процедуры вызова этих макросов из "Главного файла"
Всё работает отлично до тех пор, пока два или более пользователя не запустят любые из макросов ОДНОВРЕМЕННО
В этом случае у первого пользователя макрос успевает сработать, а у остальных - появляется сообщение об ошибке VBA (доступ к файлу) и зависает Excel

Есть светлые мысли как сохранить структуру как на картинке выше и сделать её работоспособной при любых действиях пользователя?
К сообщению приложен файл: 3176338.png (23.4 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВсем привет

Впервые столкнулся с такой проблемой, пытаясь реализовать архитектуру многопользовательского доступа к макросам, хранящимся в одной книге
Структура такова:


Поясню. В файле с макросами (буду называть его "Главный файл") куча кода "на все случаи жизни". В файлах пользователей только процедуры вызова этих макросов из "Главного файла"
Всё работает отлично до тех пор, пока два или более пользователя не запустят любые из макросов ОДНОВРЕМЕННО
В этом случае у первого пользователя макрос успевает сработать, а у остальных - появляется сообщение об ошибке VBA (доступ к файлу) и зависает Excel

Есть светлые мысли как сохранить структуру как на картинке выше и сделать её работоспособной при любых действиях пользователя?

Автор - Serge_007
Дата добавления - 10.04.2023 в 14:58
Gustav Дата: Понедельник, 10.04.2023, 16:13 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2769
Репутация: 1140 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Может, "кучу кода" в модуль класса завернуть? Всё-таки класс - это тип. Тогда при использовании, по идее, экземпляр класса у каждого пользователя свой должен создаваться по New и мешать друг другу не должны...

Я фантазирую, не более - типа "мозговой штурм", сам такого не делал (на многих пользователях), но, пользуясь случаем, попробовать можно. Тем более, не своими руками ;)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеМожет, "кучу кода" в модуль класса завернуть? Всё-таки класс - это тип. Тогда при использовании, по идее, экземпляр класса у каждого пользователя свой должен создаваться по New и мешать друг другу не должны...

Я фантазирую, не более - типа "мозговой штурм", сам такого не делал (на многих пользователях), но, пользуясь случаем, попробовать можно. Тем более, не своими руками ;)

Автор - Gustav
Дата добавления - 10.04.2023 в 16:13
Serge_007 Дата: Понедельник, 10.04.2023, 16:29 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
"кучу кода" в модуль класса завернуть?
Что это даст?
Ведь проблема в одномоментном обращении к "Главному файлу"...

Вот пример кода из файла пользователя:[vba]
Код
'id111 (элемент: button, атрибут: onAction), 2010+
Private Sub onAction_id111(control As IRibbonControl)
        Application.ScreenUpdating = False
        Workbooks.Open ThisWorkbook.Path & "\MAIN_Macro.xls"
        Application.Run "'MAIN_Macro.xls'!Module1.Macro1": Workbooks("MAIN_Macro.xls").Close False
        Application.ScreenUpdating = True
End Sub
[/vba]

Код открывает "Главный" файл, запускает из него нужный макрос и закрывает "Главный" файл без сохранения
И если в тот момент, когда "Главный" файл открыт и из него запущен макрос, кто-то ещё пытается так же обратиться к макросу в "Главном" файле - происходит ошибка


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
"кучу кода" в модуль класса завернуть?
Что это даст?
Ведь проблема в одномоментном обращении к "Главному файлу"...

Вот пример кода из файла пользователя:[vba]
Код
'id111 (элемент: button, атрибут: onAction), 2010+
Private Sub onAction_id111(control As IRibbonControl)
        Application.ScreenUpdating = False
        Workbooks.Open ThisWorkbook.Path & "\MAIN_Macro.xls"
        Application.Run "'MAIN_Macro.xls'!Module1.Macro1": Workbooks("MAIN_Macro.xls").Close False
        Application.ScreenUpdating = True
End Sub
[/vba]

Код открывает "Главный" файл, запускает из него нужный макрос и закрывает "Главный" файл без сохранения
И если в тот момент, когда "Главный" файл открыт и из него запущен макрос, кто-то ещё пытается так же обратиться к макросу в "Главном" файле - происходит ошибка

Автор - Serge_007
Дата добавления - 10.04.2023 в 16:29
Gustav Дата: Понедельник, 10.04.2023, 17:43 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2769
Репутация: 1140 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Т.е. мы не говорим о том, чтобы создать из главного файла надстройку или подключать его как-то как библиотеку через Tools \ References?

Нужно именно так по-простому: открывать, пользовать, закрывать? Общий доступ к нему, конечно же, включен?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеТ.е. мы не говорим о том, чтобы создать из главного файла надстройку или подключать его как-то как библиотеку через Tools \ References?

Нужно именно так по-простому: открывать, пользовать, закрывать? Общий доступ к нему, конечно же, включен?

Автор - Gustav
Дата добавления - 10.04.2023 в 17:43
Serge_007 Дата: Понедельник, 10.04.2023, 17:52 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
создать из главного файла надстройку или подключать его как-то как библиотеку через Tools \ References?
Как надстройку? Скорее нет
То же касается и подключений
Пользователи не должны трогать "Главный" файл, да и не умеют они этого...
Но опять-таки - что даст преобразование его в надстройку?
При одномоментном "подключении" нескольких пользователей опять-таки будет конфликт доступа

Нужно именно так по-простому
Не, нужно как угодно - лишь бы работало)

Общий доступ к нему, конечно же, включен?
Нет
Честно - даже не думал об этом, потому что общий доступ - это настройка Excel, а тут проблема с конфликтом VBA
Но я завтра попробую включить - вдруг получится?

Спасибо за идеи yes


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
создать из главного файла надстройку или подключать его как-то как библиотеку через Tools \ References?
Как надстройку? Скорее нет
То же касается и подключений
Пользователи не должны трогать "Главный" файл, да и не умеют они этого...
Но опять-таки - что даст преобразование его в надстройку?
При одномоментном "подключении" нескольких пользователей опять-таки будет конфликт доступа

Нужно именно так по-простому
Не, нужно как угодно - лишь бы работало)

Общий доступ к нему, конечно же, включен?
Нет
Честно - даже не думал об этом, потому что общий доступ - это настройка Excel, а тут проблема с конфликтом VBA
Но я завтра попробую включить - вдруг получится?

Спасибо за идеи yes

Автор - Serge_007
Дата добавления - 10.04.2023 в 17:52
RAN Дата: Понедельник, 10.04.2023, 19:29 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Сохрани файл как надстройку, и подключи к рабочим файлам через Referens.
При запуске рабочего файла у пользователя будет автоматически подгружаться надстройка с работающими кодами.
К сообщению приложен файл: 6934497.jpg (13.5 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСохрани файл как надстройку, и подключи к рабочим файлам через Referens.
При запуске рабочего файла у пользователя будет автоматически подгружаться надстройка с работающими кодами.

Автор - RAN
Дата добавления - 10.04.2023 в 19:29
Nic70y Дата: Вторник, 11.04.2023, 07:40 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8937
Репутация: 2337 ±
Замечаний: 0% ±

Excel 2010
Сергей, видимо есть причина по которой нельзя засунуть макросы в файлы пользователей.
А что это за причина?
Сохрани файл как надстройку
лично у меня нет такой возможности,
ну точнее придется долго убеждать директора.

работаем на сервере, то же периодически сталкиваюсь с такими вопросами.
только менеджерам я сделал копии "главного файла"


ЮMoney 41001841029809
 
Ответить
СообщениеСергей, видимо есть причина по которой нельзя засунуть макросы в файлы пользователей.
А что это за причина?
Сохрани файл как надстройку
лично у меня нет такой возможности,
ну точнее придется долго убеждать директора.

работаем на сервере, то же периодически сталкиваюсь с такими вопросами.
только менеджерам я сделал копии "главного файла"

Автор - Nic70y
Дата добавления - 11.04.2023 в 07:40
Serge_007 Дата: Вторник, 11.04.2023, 11:12 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
есть причина по которой нельзя засунуть макросы в файлы пользователей
Можно, это План Б :)
Но хотелось бы этого избежать
Смысл в том, что в будущем возможны изменения, которые потребуют корректировки макросов
Так вот хотелось бы корректировать один раз в "Главном" файле, чем в каждом файле пользователя

Сохрани файл как надстройку, и подключи к рабочим файлам через Referens
Подключать надо КАЖДЫЙ файл пользователя вручную?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
есть причина по которой нельзя засунуть макросы в файлы пользователей
Можно, это План Б :)
Но хотелось бы этого избежать
Смысл в том, что в будущем возможны изменения, которые потребуют корректировки макросов
Так вот хотелось бы корректировать один раз в "Главном" файле, чем в каждом файле пользователя

Сохрани файл как надстройку, и подключи к рабочим файлам через Referens
Подключать надо КАЖДЫЙ файл пользователя вручную?

Автор - Serge_007
Дата добавления - 11.04.2023 в 11:12
Nic70y Дата: Вторник, 11.04.2023, 12:21 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 8937
Репутация: 2337 ±
Замечаний: 0% ±

Excel 2010
Смысл в том, что в будущем возможны изменения, которые потребуют корректировки макросов
именно с такой (наверное) ситуацией я и столкнулся.
файлы пользователей (у нас) это в принципе отчет, калькулятор и т.п. - данные в него юзер не вносит.
файл пользователя, при открытии сравнивает свою версию с моим файлом
и если они не совпадают, открывает файл "Обновление" вставляет свои Path и Name, закрывается,
в файле "Обновление" одна кнопка - Обновить
без вариантов, макрос Открывает мой файл и сохраняет его как Path и Name.
все - у юзера новый файл, но это конечно, когда - данные в него юзер не вносит


ЮMoney 41001841029809
 
Ответить
Сообщение
Смысл в том, что в будущем возможны изменения, которые потребуют корректировки макросов
именно с такой (наверное) ситуацией я и столкнулся.
файлы пользователей (у нас) это в принципе отчет, калькулятор и т.п. - данные в него юзер не вносит.
файл пользователя, при открытии сравнивает свою версию с моим файлом
и если они не совпадают, открывает файл "Обновление" вставляет свои Path и Name, закрывается,
в файле "Обновление" одна кнопка - Обновить
без вариантов, макрос Открывает мой файл и сохраняет его как Path и Name.
все - у юзера новый файл, но это конечно, когда - данные в него юзер не вносит

Автор - Nic70y
Дата добавления - 11.04.2023 в 12:21
Serge_007 Дата: Вторник, 11.04.2023, 12:35 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
данные в него юзер не вносит
В моем случае - пользователи со своими файлами работают, и данные вносят
Но на этом разница заканчивается :)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
данные в него юзер не вносит
В моем случае - пользователи со своими файлами работают, и данные вносят
Но на этом разница заканчивается :)

Автор - Serge_007
Дата добавления - 11.04.2023 в 12:35
Nic70y Дата: Вторник, 11.04.2023, 12:50 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 8937
Репутация: 2337 ±
Замечаний: 0% ±

Excel 2010
пользователи со своими файлами работают
вот жеж... гады не хорошие


ЮMoney 41001841029809
 
Ответить
Сообщение
пользователи со своими файлами работают
вот жеж... гады не хорошие

Автор - Nic70y
Дата добавления - 11.04.2023 в 12:50
RAN Дата: Вторник, 11.04.2023, 15:31 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Да, каждый.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДа, каждый.

Автор - RAN
Дата добавления - 11.04.2023 в 15:31
VBAdevelope Дата: Вторник, 11.04.2023, 15:51 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 4 ±
Замечаний: 20% ±

2013
А не вариант просто сделать данный файл доступным только для чтения или по вызову создавать локальную копию с именем юзера?


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871
 
Ответить
СообщениеА не вариант просто сделать данный файл доступным только для чтения или по вызову создавать локальную копию с именем юзера?

Автор - VBAdevelope
Дата добавления - 11.04.2023 в 15:51
Gustav Дата: Вторник, 11.04.2023, 15:53 | Сообщение № 14
Группа: Админы
Ранг: Участник клуба
Сообщений: 2769
Репутация: 1140 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Честно - даже не думал об этом, потому что общий доступ - это настройка Excel, а тут проблема с конфликтом VBA
Но я завтра попробую включить - вдруг получится?

Серж, попробовал Общий доступ-то? Получилось что-нибудь?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Честно - даже не думал об этом, потому что общий доступ - это настройка Excel, а тут проблема с конфликтом VBA
Но я завтра попробую включить - вдруг получится?

Серж, попробовал Общий доступ-то? Получилось что-нибудь?

Автор - Gustav
Дата добавления - 11.04.2023 в 15:53
Serge_007 Дата: Вторник, 11.04.2023, 16:34 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Да, каждый.
Жесть
Вроде работает, но файлов почти полтысячи...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Да, каждый.
Жесть
Вроде работает, но файлов почти полтысячи...

Автор - Serge_007
Дата добавления - 11.04.2023 в 16:34
Serge_007 Дата: Вторник, 11.04.2023, 16:37 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
сделать данный файл доступным только для чтения или по вызову создавать локальную копию с именем юзера
В файл должна записываться информация по каждому из файлов пользователя


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
сделать данный файл доступным только для чтения или по вызову создавать локальную копию с именем юзера
В файл должна записываться информация по каждому из файлов пользователя

Автор - Serge_007
Дата добавления - 11.04.2023 в 16:37
Serge_007 Дата: Вторник, 11.04.2023, 16:38 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
попробовал Общий доступ-то?
Пока нет, пробовал вариант Андрея с надстройкой


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
попробовал Общий доступ-то?
Пока нет, пробовал вариант Андрея с надстройкой

Автор - Serge_007
Дата добавления - 11.04.2023 в 16:38
RAN Дата: Вторник, 11.04.2023, 18:20 | Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Если файлов 500, а пользователей 10, то проще просто всем подключить надстройку.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЕсли файлов 500, а пользователей 10, то проще просто всем подключить надстройку.

Автор - RAN
Дата добавления - 11.04.2023 в 18:20
Serge_007 Дата: Вторник, 11.04.2023, 22:56 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Пользователей больше чем файлов, приблизительно в 2,5 раза...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеПользователей больше чем файлов, приблизительно в 2,5 раза...

Автор - Serge_007
Дата добавления - 11.04.2023 в 22:56
Serge_007 Дата: Среда, 12.04.2023, 11:46 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Если файлов 500, а пользователей 10
Пользователей много, но подключать надо не пользователей, а файлы, т.е. важно кол-во файлов

На данный момент тема закрыта, возможно позже ещё вернусь к ней

Все огромное СПАСИБО!


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Если файлов 500, а пользователей 10
Пользователей много, но подключать надо не пользователей, а файлы, т.е. важно кол-во файлов

На данный момент тема закрыта, возможно позже ещё вернусь к ней

Все огромное СПАСИБО!

Автор - Serge_007
Дата добавления - 12.04.2023 в 11:46
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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