Vba excel многопользовательский режим

Обновляемый многопользовательский макрос

Время на прочтение
8 мин

Количество просмотров 13K

Я не умею программировать, но очень люблю!
Немного измененная цитата художника Васи Ложкина.
Статьей хочу поделиться опытом поднятия многопользовательской системы на VBA Excel.
На момент принятия решения о создании гибкого приложения, было порядка 7 макросов, работающих по большим объемам (несколько файлов от 20 тыс. строк до 370 тыс. строк), весящих от 50 килобайт до 12 мегабайт, каждый из которых был написан в соответствии со знаниями существующими на момент написания. Каждый макрос изменялся, дописывался, исправлялся в части ошибок, а учитывая, что этими макросами пользовались более 60 человек, не все из которых отслеживали изменения, постоянно дергали меня показывая очередную ошибку, которую я уже исправил и выслал на всех. Объяснять толпе народу как правильно пользоваться макросами, я бросил сразу, так как кто то не услышит, кто то не поймет о чем речь, кто-то возьмет уже отформатированную таблицу в работу с макросами, а я не могу предугадать кто и как изменяет таблицы.

Необходимо было сделать один код, а не 60 копий каждого изменения, высланного по почте.

Решение быстро пришло в голову, а гугл быстро выдал мне результаты по программному изменению кода VBA, которая в последствии была откатана на практике. Итак, текст без картинок не интересен, вот первая, это структура приложения, которая выглядет так:

image
Пользователь открывая файл, активируя событие excel «открытие книги» выполняет процедуру, находящуюся в файле «клиенте». Процедура формирует меню, читая файлы на сети. Нажимая на кнопку нужного макроса, выполняется действие по созданию модуля в клиенте, из файла находящегося на сети, выполняет действия и уничтожает процедуру внутри себя.

Что мы получаем:
— файл для любого макроса всегда один.
— нажимая на выполнение какого либо макроса, пользователь будет всегда пользоваться самым последним кодом, что упрощает поддержку макросов.
— возможность писать лог файл по ошибкам, с указанием пользователя, на случай необходимости избить того кто все испортил.

Далее будет много копипаста по коду, измененного под мои задачи, я бы с удовольствием указал авторов, но честно не знаю, много кода брал с буржуйских ресурсов, что то с российских, что то придумано мною, все это копилось в течении полугода минимум, так что заранее большое сорри перед первоисточниками, если чего, пишите, удалю.

Итак, практическая часть.

Вешаем событие на открытие книги:

Private Sub Workbook_Open()
create_module_for_file
End Sub

Код не хитрый, концепция одна, дать пинок для дальнейших действий
Процедура create_module_for_file:

filemod = OpenFileModule("menu")
cl_d.create_module ("menu")
cl_d.write_sub_for_module_action filemod, "menu"

filemod = OpenFileModule("list_action")
cl_d.create_module ("list_action")
cl_d.write_sub_for_module_action filemod, "list_action"

Три строки три действия, в начале нам необходимо подобрать файл с модулем. За это отвечает следующая функция:

Function OpenFileModule(namemodule)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    filepath = "-//путь к файлу//-Макрос"
    mSearch = ".txt"
    OpenFileModule = FSO.GetFile(filepath & "" & namemodule & mSearch)
End Function

Далее создаем модуль:

Function create_module(name_module) 
' создаем новый модуль макроса и подпрограмм
ThisWorkbook.VBProject.VBComponents.Add vbext_ct_StdModule
' определяем индекс созданного модуля
k = ThisWorkbook.VBProject.VBComponents.Count
' даем свое имя модуля
ThisWorkbook.VBProject.VBComponents.Item(k).Name = name_module
End Function

И пишем в модуль код из файла

Function write_sub_for_module_action(filepath, filename)
    Open filepath For Input As #1 
    s = ""
    Do Until EOF(1)
        Line Input #1, Data
        s = s & Data & z & z
    Loop 
    Set vbComp = ThisWorkbook.VBProject.VBComponents(filename) 
    With vbComp.CodeModule
        .InsertLines .CountOfLines + 1, s
    End With
    Set vbComp = Nothing
    Close #1
End Function

Получив файлы, подгружаем меню.
При загрузке формируется меню, которое помещается в надстройки
image
По коду:
-для начала удалим, на случай если будет обновление:


Application.CommandBars(1).Controls("MTS_K").Delete
- создаем панель
<source lang=«VBScript»>

‘ вычисляем куда положить, позицию, в случае если уже есть открытые надстройки
MenuPos = Application.CommandBars(1).FindControl(ID:=30010).Index + 1
‘ добавляем панель
Set Menu = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, before:=MenuPos, temporary:=True)
‘ задаем имя для панели
Menu.Caption = "MTS_K"

Панель создали, теперь создаем непосредственно меню, которое будет создавать кнопки непосредственно по каждому файлу с макросами.


‘ создаем кнопку для подменю
Set Menuname = Menu.Controls.Add(Type:=msoControlPopup)
‘ задаем имя для кнопки
Menuname.Caption = "Перевод YES->NO"

После того как меню создано, добавляются кнопки. Меню строилось по принципу файл -> одна кнопка. В свою очередь по одному файлу с макросом может быть несколько процедур, которые необходимо вызывать, вот в под меню их и суем. Данный код создает 3 кнопки:


Set SubItem = MenuItem.Controls.Add(Type:=msoControlButton) ‘ добавляет кнопку
SubItem.Caption = "Картотека к виду" ‘ название, которое будет отображаться в меню
SubItem.FaceId = "801" ‘ здесь указываем айди картинки, для отображения у кнопки
SubItem.OnAction = "action11a" ‘ здесь название вызываемой процедуры
SubItem.Enabled = True ‘ отображаем или нет

Set SubItem = MenuItem.Controls.Add(Type:=msoControlButton)
SubItem.Caption = "Сформировать файлы"
SubItem.FaceId = "1038"
SubItem.OnAction = " action12a"
SubItem.Enabled = True

Set SubItem = MenuItem.Controls.Add(Type:=msoControlButton)
SubItem.Caption = "Сформировать файлы для модернизации"
SubItem.FaceId = "1038"
SubItem.OnAction = " action13a"
SubItem.Enabled = True

Результат примерно вот:
image
В режиме написания изменил концепцию работы. Задача стояла в использовании последней версии кода при каждом нажатии «выполнить макрос». Учитывая эти обстоятельства, к клиенту будут загружаться определенные файлы, назовем их индексным файлам, то есть постоянно присутствующим после открытия файла модулям, это «menu» и «list action», а непосредственно файлы макросов будут подгружаться по нажатию кнопки. В чем их смысл: файл меню формирует меню :)


    Set MenuItem = PLEXMenu.Controls.Add(Type:=msoControlPopup)
    MenuItem.Caption = "Работа по картотеке"
    Set SubItem = MenuItem.Controls.Add(Type:=msoControlButton) 
    SubItem.Caption = "Картотека к виду"
    SubItem.FaceId = "801"
    SubItem.OnAction = "action11"
    SubItem.Enabled = True 

В меню мы видим событие, ссылающееся на процедуру «action1…x», которая сидит во втором файле «list_action». Посмотрим на его содержимое


Sub action11()
    Set cl_d = New Edit_module
    On Error Resume Next
    cl_d.delete_modul_full ("action_yes_no")
    filemod = OpenFileModule("action_yes_no")
    cl_d.create_module ("action_yes_no")
    cl_d.write_sub_for_module_action filemod, "action_yes_no"
    kart_view 
End Sub

Что мы делаем, во-первых нам необходимо удалить модуль для того что бы его заного загрузить и использовать, мало ли код изменен. Далее мы открываем файл, создаем модуль и пишем в него код из файла.
После этих манипуляций нам необходимо вызвать процедуру, выполняющую манипуляции, которые подразумевались нажатием на кнопку выполнения процедуры.
Здесь интересно)
Если мы укажем имя процедуры, которая находится непосредственно в коде выше, у нас процедура action11 ругнется на то что не может найти процедуру «kart_view», и правильно, ведь по факту ее на момент нажатия кнопки исполнения процедуры нет, на этот случай использован лайфхак, создается функция, которая в свою очередь вызывает эту процедуру, код вот:


Sub action11()
    Set cl_d = New Edit_module
    On Error Resume Next
    cl_d.delete_modul_full ("action_yes_no")
    filemod = OpenFileModule("action_yes_no")
    cl_d.create_module ("action_yes_no")
    cl_d.write_sub_for_module_action filemod, "action_yes_no"
    action11a
End Sub
Function action11a()
    kart_view
End Function

То есть на момент вызова «kart_view» из «action11a», данная процедура уже будет загружена в модуль, vba подвоха не видит.
Получаемый итог: жмем на кнопку, загружается код в модуль, выполняется. В случае повторного выполнения модуль удаляется, грузится заново, выполняется. При закрытии файла книга отчищается от всего, для того что бы не занимать место и спокойно лежать до следующего открытия.
Еще пару слов по обработке больших файлов, думаю будет интересно. Как говорилось, файлы используются большого объема, более 300 тыс.строк, из которых необходимо выбрать, как правило, тыс. 10-30 и работать с ними.
Если бы меня с пол года назад спросили как сделать выборку, я бы не ведая сказал бы цикл с условием. В последствии было перепробовано много способов, опишу каждый, так, для инфо, кроме тех что можно реализовать стандартными функциями excel.
Исходные данные: есть таблица 300 тыс строк, известно 10 тыс значений, которые нам нужны.
1) Вначале я попытался сделать выборку циклом


tab1 = таблица один
tab2 = таблица один
col_tab1 = tab1.Cells(Rows.Count, 1).End(xlUp).Row ‘количество строк первой таблицы (10 тыс)
col_tab2 = tab2.Cells(Rows.Count, 1).End(xlUp).Row ‘количество строк второй таблицы (300 тыс)
for i = 1 to col_tab1
for ii = 1 to col_tab2
	if tab1.cells(ii,1) = tab2.cells(i,1) then
		действия
		exit for
	end if
next ii 
next i

Что получаем, если не завершать цикл, получается что нам 10000 раз необходимо перебрать 300000 строк для поиска результата. Отрабатыва vba будет примерно 500 строк в секунду, итого
3000000000/500 = 6000000 секунд, (100000 минут или 1666,66 часов или 69 дней или 9 недель или …)
А результат как правило нужен здесь и сейчас, ну или через пару минут максимум, так что сразу нет.
2) Второй используемый мною способ – работа с mysql сервером
Для работы с mysql сервером, который уже был, для другого проекта, был необходим драйвер mysql ODBC, их мне было известно 2, версия 3.51, и версия 5.1 Выбор пал на 3.51, так как второй, по обсуждениям его работы на форумах, не очень хорошо работал с кодировками, а базу хотелось в utf8
Драйвер мне поставили, и первая кочка, на которой я споткнулся – права доступа

То есть нужна учетная запись для подключения из вне, в нашем случае это будет vba-макрос который матерился так:
image
Покурив мануалы sql, нашел это

CREATE USER '%'@'user' IDENTIFIED BY PASSWORD 'mtspass';
GRANT SELECT ON *.* TO '%'@'user'; 

То есть, по запросу выше, создается учетная запись для любого пользователя с рут правами.
Естественно рут прав мне никто не дал и проект использующий mysql сервер для хранения данных, был «заморожен» так как в перспективе нужно было писать в базу данные, у меня было только чтение.
Для оценки эффективности: один и тот же макрос используя переборы с помощью циклов работал 59 секунд, с sql удалось сделать все то же самое за 3,5-4 секунды, то есть реально удалось ускориться более чем в 10 раз.
По коду хорошая статья вот здесь: egregors.blogspot.ru/2013/05/mysql-vba-excel-mysql.html
3) Продолжая курить тему sql, начал работу по работе с access.
Код получается адовый, но рабочий.


Set cN = New ADODB.Connection ‘переменная подключения
    cN.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=-//путь к файлу//-basebase" & Environ("USERNAME") & ".mdb; Jet OLEDB:Database;" ‘ подключаемя к файлу базы  
    ‘ соберем нужные активы для поиска
    for i = 1 to col_tab1
        nabor_act = nabor_act & “’,’” & tab1.cells(i,1)
    next i
    Set RS = New ADODB.Recordset ‘ переменная в которую будет занесен результат
    RS.Open "SELECT * FROM kartoteka WHERE nom_act LIKE ‘” & right(nabor_act, len(nabor_act)-3) & ”’ ;", cN, adOpenStatic, adLockOptimistic
    o = 2
    Do While Not RS.EOF
            ter.Cells(o, 1) = "РСБУ" & Right$(RS.Fields(1).Value, 6)
            ter.Cells(o, 2) = RS.Fields(2).Value
            ter.Cells(o, 3) = "КОРРЕКТ"
            ter.Cells(o, 4) = RS.Fields(6).Value
            ter.Cells(o, 5) = ""
            
            o = o + 1
        RS.MoveNext
    Loop
    cN.Close
    Set cN = Nothing

Данный способ работает медленнее чем mysql, почему то, но вполне приемлем для использования. Но не мне…
Отказался я от него в первый же раз, когда нужна была система при котором пользователь в определенной папке создает базу и пишет туда 2 таблицы по 300 тыс.строк, для их сравнения и вычисления. При тестах у меня получилась база размером около 600 метров, учитывая что в перспективе этим макросом одновременно может воспользоваться 50 человек, получается папка размером в примерно 25-30 гигов, за которую меня админы четвертовали бы сразу.
4) Собственно способ на котором я остановился. Да, работает медленнее второго и третьего способа, но данные недостатки компенсируются функциональностью. Sql запрос по книге


Set cn = New ADODB.Connection ' экземпляр класса коннекта
    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.path & "" & ActiveWorkbook.Name & ";Extended Properties=Excel 12.0;" ' подключаемся к файлу
    cn.ConnectionTimeout = 40 
    cn.Open
‘ соберем нужные активы для поиска
    for i = 1 to col_tab1
        nabor_act = nabor_act & “’,’” & tab1.cells(i,1)
    next i

        sql = "SELECT * FROM [res$] WHERE [Номер актива] ‘” & right(nabor_act, len(nabor_act)-3) & ”’ "
    
    Dim rs As New ADODB.Recordset
    Set rs = New ADODB.Recordset ' экземпляр класса записи
    rs.ActiveConnection = cn ' говорим откуда идет соединение
    rs.LockType = adLockOptimistic ' это значение позволяет выиграть в производительности за счет проигрыша в надежности обеспечения целостности данных. Запись на источнике блокируется только на время выполнения метода Update(). Остальные пользователи могут одновременно с вами читать и изменять данные на источнике.
    rs.CursorLocation = adUseClient ' курсор на стороне клиента
    rs.source = sql ' запрос
    rs.Open
    
    
    rs.MoveFirst ' начать с первой записи
    rew = ""
    Do Until rs.EOF ' перебираем вперед
        rew = rew & "','" & rs.Fields(0).Value
        rs.MoveNext ' переход к следующей строке
    Loop
    rs.Close
    cn.Close

Вот… Если брать условия примера, на вскидку где то секунд 10 соберется строка для запроса, секунд 25 повисит запрос с выборкой, секунд 10 на отработку в зависимости от необходимого результата.
Как то так.

Совместная работа с книгой Microsoft Excel

Совместная работа в Microsoft Excel

​Смотрите также​ средствами VBA сделать​ в Access не​ одном файле находятся​ заходят… заходят только​ при сохранении полученного​: Не доступ слетает,​ файл в режиме​ 2 тонких клиента​ ОК.​Удалять листы.​Совет:​ то кликните по​ том случае, если​.​Совместная работа предусматривает постоянный​Кроме того, все в​При разработке крупных проектов​ так, чтобы при​ надо будет углубляться,​ формулы, которые содержат​ по одному и​ результата, выводилось сообщение​ а конкретного пользователя​

​ общего доступа. Но​ + 1 толстый,​

Процесс совместной работы

​Открываем меню Microsoft Office.​Объединять либо разделять ячейки.​ Если вы хотите отправить​ кнопке​ нужно создать новую​Далее открывается окно просмотра​ контроль и координацию​ том же окне​ зачастую не хватает​ открытии книги выполнялась​ его роль в​ ссылки на другой​ при этом могут​ о переименовании данного​ отключают.​ переодически с ним​

Предоставление совместного доступа

​ сам файл хранится​Нажимаем «Открыть».​Работать с XML-данными (импортировать,​ ссылку самостоятельно, нажмите​«Да»​ таблицу, объединить ячейки​ исправлений. В нем​ действий всех участников​ доступа к файлу​ сил одного сотрудника.​ проверка, разрешён ли​ этой связке очень​ файл.​ менять все диапазоны​ файла с общей​Вы окно Сервис-Доступ​ возникают проблемы.​ на сервере в​Выбираем общую книгу.​ добавлять, обновлять, удалять​

  1. ​ кнопку​.​ или выполнить любое​​ нужно произвести настройки​​ группы.​ можно настроить параметры​​ К такой работе​​ изменять книгу нескольким​ пассивная (но очень​​У вас какая​​В чём проблема?​

    Переход к окну доступа к книге в Microsoft Excel

  2. ​ таблицей, а сам​ к книге… в​IT-ки говорят, что​ общей папке.​Когда книга открыта, нажимаем​​ и т.д.).​Поделиться​​После вышеуказанных действий общий​ другое действие из​​ отбора тех изменений,​​Чтобы посмотреть действия, совершенные​ одновременной работы. Это​

    Окно управление доступа к книге в Microsoft Excel

  3. ​ привлекается целая группа​ пользователям, и если​ ответственная — хранить​ конкретно связь? Кто​ Книга простая, макросов​​ исходный файл с​​ режиме общего доступа​

Сохранение файла в Microsoft Excel

​ с их стороны​Возникают такие проблемы:​ на кнопку Microsoft​Выход: отключить общий доступ​в правом верхнем​ доступ к файлу​ вышеуказанного перечня? Выход​ которые мы хотим​ конкретным пользователем во​ можно сделать сразу​ специалистов. Естественно, что​ нет, то принудительно​​ данные).​​ осуществляет копирование данных​ в ней нет…​ этой таблицей остался​

Обозначение общего файла в Microsoft Excel

Настройка параметров

​ открывали?​ все в порядке,​1. При сохранении​ Office. Переходим на​ – выполнить запрещенную​ углу экрана, а​ будет закрыт, а​ есть, и он​ утвердить или отклонить.​ время работы над​ же во время​ у каждого из​ включать этот режим​у такой связки​ из файла-базы?​

  1. ​Guest​​ неизменным, то есть​​Там отображается список​

    Переход во вкладку Подробнее в Microsoft Excel

  2. ​ разбирайтесь с Excel.​ файла периодически возникает​ вкладку «Параметры Excel»​ задачу – снова​ затем выберите элементы​ журнал исправлений будет​

    ​ довольно простой: нужно​ Операции в данном​ книгой, находясь во​ включения режима совместной​ них должен быть​ для этой книги?​

    ​ два огромных плюса:​ZamoK​​: Рецензирование — Доступ​​ вся таблица пустая?​ текущих сессий работы​В Excel вроде​ конфликт и программа​ (в нижней части​ включить доступ.​Копировать ссылку​ очищен. Информацию о​ временно отключить общий​ окне выполняются по​ вкладке​ работы, а можно​ доступ к документу,​Haken​1. автоматически поддерживается​: Нет связи постоянной​

    ​ к книге- галочка​Также, можно ли​ пользователей с файлом​ бы все настроено​ предлагает сохранить копию​ меню).​

    ​Совместное пользование ограничивает для​ >​ ранее произведенных операциях​ доступ к документу,​​ тому же типу,​​«Рецензирование»​

Настройка общего доступа в Microsoft Excel

Открытие общего файла

​ отредактировать параметры чуть​ который является объектом​: Как ни странно,​

  1. ​ многопользовательская система​ нет и она​​ разрешить менять нескольким​​ организовать доступ к​ (и за одно​​ как надо.​​ файла, что не​

    Переход к открытию файла в Microsoft Excel

  2. ​«Общие» — «Личная настройка»​ участников еще ряд​Просмотр и редактирование​ теперь можно будет​ выполнить нужные изменения,​ который мы рассматривали​кликаем по кнопке​​ позже. Но, естественно​​ совместного труда. В​

    Открытие файла в Microsoft Excel

  3. ​ нашел в справке​2. данные лежат​ не нужна, просто​ пользователям. Делал?​ изменениям только конкретным​ — список «зависших»​Пользователи говорят, что​​ приемлемо.​​ — «Имя пользователя».​ задач:​​.​​ увидеть в виде​

    Переход в Параметры в Microsoft Excel

  4. ​ а затем подключить​​ в предыдущем разделе.​​«Исправления»​​ ими управлять может​​ связи с этим​​ :)​​ отдельно, код -​ при открытии рабочего​По диапазонам не​ людям?​ старых не корректно​ все работало пока​​2. Пропадают примечания,​​ Вводим опознавательную информацию​

Параметры в Microsoft Excel

​Недопустимо​Если на предыдущем шаге​

Просмотр действий участников

​ таблицы только на​ возможность совместной работы​ После того, как​, которая находится в​

  1. ​ только главный пользователь,​ очень актуальным становится​Нужно добавить в​ отдельно. внося исправления​ документа он копирует​​ скажу не сталкивался.​​Dophin​​ завершенных сессий работы,​​ не перешли на​ сетка. При редактировании​​ (имя, ник-нейм).​​Реально​ вы нажали кнопку​ листе​​ снова.​​ настройки внесены, жмем​

    Переход в окно выделения исправления в Microsoft Excel

  2. ​ группе инструментов​ который координирует общую​ вопрос обеспечения одновременного​ модуль «ЭтаКнига»​ в программу, Вы​ лист1 из данных​igorsss​: ексель это однопользовательское​

    ​ который приходится иногда​ тонкого клиента.​ файла (форматировании ячеек)​Все. Можно редактировать информацию,​Вставлять либо удалять группу​ «Поделиться», то каждый​«Журнал»​Когда работа над проектом​ на кнопку​«Изменения»​ работу с файлом.​ коллективного доступа. Программа​Private Sub Workbook_Open()​ не изменяете данные.​ и далее работает​

    Настройка изображения исправлений по умолчанию в Microsoft Excel

    ​: конечно делал… всё​ приложение. запомните это.​ чистить, к стати).​IT-ки же говорят,​ на одном рабочем​ вводить новую. После​

    Новое отображение исправлений в Microsoft Excel

  3. ​ ячеек​ пользователь получит сообщение​, если соответствующие действия​ закончена, или, в​​«OK»​​на ленте. В​Переходим во вкладку​ Excel имеет в​
    • ​If Not ActiveWorkbook.MultiUserEditing​ можно улучшать код​
    • ​ с актуальной копией.​ как в помощи​
    • ​ все эти попытки​Если в этом​
    • ​ что разбирайтесь с​ месте, форматирование не​

    Отображения вариантов выбора в поле По времени в окне исправлений в Microsoft Excel

    ​ работы – сохранить.​​Добавлять строку или столбец​​ электронной почты. Сообщение​ по сохранению данной​ случае необходимости внесения​.​ открывшемся меню кликаем​«Подробнее»​

    Выбор пользователей в Microsoft Excel

    ​ своем распоряжении инструменты,​​ Then​​ уже работающего приложения.​ Но вот при​ написано :(:(​ создать из него​ списке выбрать какого-то​ Excel.​

    ​ отображается на другом​Случается, что при открытии​Добавлять либо изменять условные​ будет отправлено с​ информации были проведены​ изменений в файл,​В следующем окне отображаются​ по кнопке​.​ которые могут его​​ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, _​​nerv​

    Изменение настроек в окне исправления в Microsoft Excel

  4. ​ открытии второго рабочего​igorsss​ многопользовательскую БД -​ работающего пользователя и​

Рецензирование действий пользователей

​Как решить эту​ рабочем месте.​ книги Excel с​ форматы​ вашего адреса электронной​

  1. ​ ранее.​​ о списке которых​​ все исправления, которые​​«Выделить исправления»​​Тут можно указать, хранить​​ предоставить. Давайте разберемся​​accessMode:=xlShared​

    Переход к рецензированию исправлений в Microsoft Excel

  2. ​: Так и есть​ документа на другой​: я это делал,​ от лукавого.​ нажать «Удалить», то​ проблему не пойму.​Помогите разобраться в​ совместным доступом к​Работать с существующими форматами​ почты. Вы получите​Как видим, программа Эксель​ мы говорили в​ удовлетворяют выбранным нами​.​​ ли журналы изменений,​​ в нюансах работы​

    Просмотр испралений в Microsoft Excel

  3. ​End If​Quote​ машине, происходит ругань​ но после выбора​Микки​ он ничего не​ Хотела удостовериться в​ чем проблема…​ файлу появляется запись​Включать или изменять инструмент​ его копию, так​ предоставляет возможность включения​ предыдущем разделе, следует​ ранее параметрам. Выделив​Открывается окно просмотра исправлений.​

Принятие или отказ испралений в Microsoft Excel

Удаление пользователя

​ и если хранить,​ приложения Эксель в​End Sub​(nilem)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Ну, вот например,​ что кто-то уже​ автоматом подставляется ФИО…​: Не согласен с​ заметит пока не​ правильности настройки файла​Alex_ST​ «Файл заблокирован». Сохранить​ «Проверка данных»​ что будете знать,​ общего доступа к​

  1. ​ отключить режим совместной​​ конкретное исправление в​​ По умолчанию после​​ то какое время​​ условиях одновременной работы​Правда не нашел​​ открыли файл на​​ использует данные, то​

    Переход к удалению пользователя в Microsoft Excel

  2. ​ тамже ексчендж​ Вами Андрей для​ попытается сохранить результаты​ Excel.​​: А не может​​ не получается. При​Работать с существующими настройками​ как оно выглядит.​ файлу и одновременной​ работы.​ списке действий, и​ того, как книга​​ (по умолчанию включено​​ нескольких пользователей с​

    Удаление пользователя в Microsoft Excel

  3. ​ еще, как сделать,​ двух машинах. И​ дех пор пока​igorsss​ малого количества пользователей​ своей работы. О​Alex_ST​ быть, что тонкие​ последующем открытии оказывается,​ проверки​Если вы нажали кнопку​​ работы с ним.​​Прежде всего, все участники​

Подтверждение удаление пользвателя в Microsoft Excel

​ нажав соответствующую кнопку,​

Ограничения по использованию общей книги

​ становится общей, автоматически​ 30 дней).​ одной книгой.​ чтобы он не​ одновременно нажали кнопку​ не закроешь первый​: с ячеек снят​ 2-3 работает корректно​ вот тогда его​

  • ​: Явно Офис-сервер криво​
  • ​ и толстые клиенты​
  • ​ что общий доступ​
  • ​Создавать или редактировать диаграммы,​
  • ​Поделиться​
  • ​ Кроме этого, с​
  • ​ должны сохранить вносимые​ расположенную внизу окна​

​ включается отслеживание исправлений,​Также тут определяется, как​Скачать последнюю версию​ спрашивал про перезапись​ запуска макроса. Ведь​ рабочий документ. Такое​ флаг защищать ячейку​ (у меня на​ будет ждать неприятный​ сконфигурён. Наверное, не​ или просто файл​ отключен. Возможные причины​ сводные отчеты​, пользователи получат сообщение​ помощью специальных инструментов​ изменения и выйти​ под перечнем, можно​ о чем свидетельствует​ обновлять изменения: только​ Excel​ файла, а сам​ не должно работать?​ ощущение что рабочий​

Отключение общего доступа

​igorsss​ фирме уже несколько​ сюрприз — «Потеряна​ только в Excel​ в режиме общего​ проблемы:​Работать с имеющимися диаграммами​ с предложением открыть​ можно отслеживать действия​

  1. ​ из файла. С​ принять данный пункт​ галочка, установленная напротив​ при сохранении книги​Эксель может не только​ сохранял. Но где-то​
  2. ​ Или все-таки выполняется​ документ коприрует лист1,​: понятно. спасибо!​ лет) -отведи им​​ связь с файлом»​​ проблемы возникли после​​ доступа на расшаренном​​Одну и ту же​ и сводными таблицами​ файл. Они могут​​ отдельных участников рабочей​​ документом остается работать​

    Переход в окно выделения исправлений в Microsoft Excel

  3. ​ или отказаться от​ соответствующего пункта.​ (по умолчанию) или​ предоставить общий доступ​​ это было…​​ в какой-то последовательности?​​ но связь так​​ZamoK​​ грамотно делянку и​​ или типа Вашего.​​ перехода? Другие приложения​​ ресурсе — пофигу?​ часть документа редактируют​Вставлять или редактировать рисунки​ щелкнуть ссылку, чтобы​​ группы. Данный режим​​ только главный пользователь.​ него. Также существует​​Фиксируются все изменения, но​ через заданный промежуток​​ к файлу, но​P.S.: просмотр и​Смотря что делает​ и оставляет активной.​: Уважаемые ГУРУ !​​ пусть пасутся на​​Ещё такое сообщение​

    Включение режима внесения исправлений на отдельном листе в Microsoft Excel

  4. ​ Офиса тоже кривятся?​Вдруг, глюк именно​ несколько пользователей. К​​ и графические объекты​​ открыть книгу. Книга​ имеет все-таки некоторые​Если нужно сохранить журнал​ возможность группового принятия​ на экране по​

    Исправления вынесены на отдельный лист в Microsoft Excel

  5. ​ времени.​ решить некоторые другие​ редактирование макросов в​ макрос.​​ Причем монопольно!​​Суть вопроса в​ своей.​​ может выскочить при​​А IT-шников фиг​

    Переход к отключению общего доступа в Microsoft Excel

  6. ​ в самом режиме​ примеру, вбивают разные​Просматривать имеющиеся рисунки и​​ откроется в Excel​​ функциональные ограничения, которые,​ операций после снятия​ или отказа от​ умолчанию они отображаются​​Очень важным параметром является​ задачи, которые появляются​​ общем доступе не​Quote​Karataev​​ том, что:​​Отдельным людям -выделите​

    Отключение общего доступа в Microsoft Excel

  7. ​ одновременном сохранении файла​ убедишь, что проблемы​ общего доступа, в​ данные в одну​ графические объекты​ Online в браузере.​ впрочем, можно обойти,​ общего доступа, то,​ всех указанных операций.​​ в виде цветовых​​ пункт​

Диалоговое окно при закрытии общего доступа в Microsoft Excel

​ по ходу совместной​ работает.​(Hugo)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Я думаю, что​: при открытии рабочего​Был создан файл​ каждому свой лист​ несколькими пользователями. Тогда​ у них (я​ котором очень многое​ ячейку. Возникает блокировка.​​Вставлять или менять гиперссылки​​ Пользователи смогут приступить​ временно отключив общий​ находясь во вкладке​Существуют случаи, когда отдельного​

​ пометок ячеек в​«Для противоречивых изменений»​ работы с одной​New​ открытый такой файл​ файла кто копирует​ excel и расположен​ .. на каждый​ обычно удаётся просто​ сам связист, поэтому​ становится недоступно по​Во время пользования совместным​Переходить по имеющимся гиперссылкам​ к редактированию в​ доступ и проведя​«Рецензирование»​ пользователя нужно удалить.​

​ их левом верхнем​

lumpics.ru

Предоставление доступа к книге Excel другим пользователям

​. В нем указывается,​ книгой. Например, инструменты​: Private Sub Workbook_Open()​ у каждого юзера​ данные из файла-базы​ на сервере, в​ лист свой пароль​

​ сохранить со второй​

  1. ​ точно знаю, что​​ сравнению с режимом​​ файлом ведется журнал​

  2. ​Назначать, редактировать либо удалять​ браузере, выбрав​​ необходимые операции в​​, кликаем по кнопке​

  3. ​ Это может быть​

  4. ​ углу, только со​

  5. ​ как программа должна​​ приложения позволяют отслеживать​​If Not ActiveWorkbook.MultiUserEditing​

​ в памяти свой​ в рабочий файл​ котором на 1​

Шаг 1. Отправка книги

​ .. про сохранение​ попытке.​ проблема всегда «на​ монопольного доступа?​ изменений (кто входил,​ пароли​

Шаг 2. Предоставление общего доступа

  1. ​Редактировать книгу​ обычных условиях работы.​«Исправления»​ связано с тем,​

  2. ​ времени последнего сохранения​​ вести себя, если​​ изменения, производимые различными​ Then​​Мне тоже так​​ ?​ листе находятся данные,​​ не очень понял​​Правда, ситуация обостряется​

  3. ​ дальнем конце»​​А попробуйте-ка проверить,​​ когда, что делал).​

  4. ​Существующие пароли функционируют​ >​Автор: Максим Тютюшев​на ленте. В​ что он выбыл​ документа одним из​ несколько пользователей одновременно​ участниками, а также​​Application.DisplayAlerts = False​​ кажется.​

  5. ​ZamoK​ которые в последующем​​ … вы хотите​​ если файл «тяжёлый»​

  6. ​)​​ что входит в​​ Книга увеличивается. Начинает​Ставить либо снимать защиту​Изменить в браузере​Предоставить доступ к книге​ открывшемся меню выбираем​​ из проекта, так​​ пользователей. Причем учитываются​ редактируют одну и​​ утверждать либо отклонять​​ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared​

    ​Quote​​: Да​ подтягивает другой рабочий​ общую книгу использовать​​ (а потому долго​​Lenaris​ личные представления кроме​ «глючить».​​ листов и книг​​. Если они захотят​​ другим пользователя можно​​ пункт​

  7. ​ и чисто по​ исправления всех пользователей​ ту же ячейку.​ их. Выясним, что​End If​(IgorGo)200?’200px’:»+(this.scrollHeight+5)+’px’);»>я в таких​nilem​ документ excel. Все​ как шаблон токо​ сохраняется), пользователей много,​: Alex_ST, в Access​

Шаг 3. Другие пользователи могут открыть файл

​ параметров печати и​​Удалили кого-то из пользователей,​​Существующая защита работает​ открыть ее в​ прямо из Excel.​«Выделить исправления…»​ техническим причинам, например,​ на всем диапазоне​ По умолчанию выставлено​ может предложить программа​End Sub​ случаях данные держу​​: Здравствуйте всем.​​ какбы хорошо. Проблема​​ ?​​ да ещё у​ тоже с доступом​ фильтров, которые были​ но пока ему​​Группировать, структурировать данные; вставлять​​ приложении Excel, они​​ Вы можете разрешить​​.​

​ если учетная запись​​ листа. Действия каждого​ условие постоянного запроса,​ пользователям, столкнувшимся с​gazbak​ в AcceSS, а​Как-то вот не​​ возникает когда параллельно​​Natalia​​ них на машинах​​ проблемы. Если один​​ включены по умолчанию​​ не сказали об​ подуровни​ смогут выбрать​

​ им редактировать книгу​Открывается окно выделения исправлений.​ была внесена неправильно​ участника помечаются отдельным​ действия кого из​ подобной задачей.​: Открываем книгу​ пользовательские интерфейсы из​ приходилось сталкиваться с​ на третьем и​: Да, у меня​ включено автосохранение с​ клиент заходит, то​ в 2003-ем. Может​ этом. Тогда блокировка​Работать с имеющимися группами,​Редактировать книгу​​ или только просматривать​​ Настройки тут нужно​ или участник начал​​ цветом.​​ участников проекта имеют​

support.office.com

Совместный доступ к файлу Excel одновременно

​Но начнем мы все​Находясь в редакторе​ ExceL.​ этим раньше. Если​ … комп. пытаются​ файл с шаблоном​ коротким интервалом.​ другой уже не​ быть в 2010-ом​ может появиться только​ структурами и подуровнями​

​>​ ее.​ расставить следующим образом.​ работать с другого​Если навести курсор на​ преимущества. Но можно​

Особенности работы с общим файлом

​ же с выяснения​ Microsoft Excel нажимаем​Давно об этом​ файл с макросами​

​ открыть рабочий документ.​

  • ​ (три листа с​
  • ​Lenaris​ может.​
  • ​ что-нибудь ещё?​
  • ​ на его компьютере.​
  • ​Записывать, изменять или просматривать​Изменить в Excel​Windows macOS ​

​ В поле​ устройства. В Экселе​ помеченную ячейку, откроется​ включить постоянное условие,​

​ вопроса, как предоставить​ комбинацию клавиш «Alt»​ подумываю, да все​

​ открыть одновременно на​ ​ Начинается ругань, что​
​ пустыми таблицами), который​: Alex_ST, окно открывала.​ ​Alex_ST​
​Lenaris​Большая нагрузка на сетевой​ ​ макросы​
​.​Нажмите кнопку​ ​«Во времени»​ существует такая возможность.​
​ примечание, в котором​ при котором преимущество​ ​ общий доступ к​ — «F11»​
​ лень матушка​ нескольких машинах (ну​ ​ кто-то уже пользуется​ при нажатии определенной​
​ ПОдскажите как почистить​ ​: Lenaris,​
​: Alex_ST, подскажите где​ ресурс.​ ​Запускать имеющиеся макросы, которые​
​Совет:​Поделиться​ ​установить параметр​
​Переходим во вкладку​ указано, кем и​ ​ будет всегда у​ файлу. Прежде всего,​
​Слева кликаем на​Quote​ ​ т.е. есть база​ данными и предлогает​ кнопки в приложении​
​ список сессий?​ну значит точно​ ​ посмотреть что входит​
​Что можно сделать, если​ не связаны с​ ​ Пользователи, у которых установлена​.​

​«Все»​

Как сделать совместный доступ к файлу Excel?

​«Рецензирование»​ когда было выполнено​ того, кто успел​ нужно сказать, что​ «ЭтаКнига»​(IgorGo)200?’200px’:»+(this.scrollHeight+5)+’px’);»>а за это​ в файле и​

  1. ​ пересохнанить для работы​ заполняется. Мне нужно,​ЧТО (вряд ли​Рецензирование-Доступ к книге.
  2. ​ в кривой установке​ в личные представления​ совместный доступ к​ недоступными задачами​ последняя версия Excel 2016​Управление доступом к файлу.
  3. ​Выберите разрешения и нажмите​. Напротив наименований полей​. В блоке​Настройки в Подробнее.
  4. ​ соответствующее действие.​ первым сохранить изменение.​ процедура включения режима​В открывшееся окошко​ можно не переживать.​ есть несколько операторов,​ документ данные на​ чтобы при заполнении​
  5. ​ кто?) может отключать​ или настройке толстого​ в Excel 2010?​ файлу файл заблокирован:​Изменять или удалять формулы​ для подписчиков Office 365,​
  6. ​ кнопку​«Пользователем»​«Изменения»​Для того, чтобы изменить​Кроме того, при желании​

​ совместной работы с​ вставляем:​ в Access не​

​ которые пытаются получить​ сервере. Запрос в​

  1. ​ данными в шаблоне​Данные-Подключения.
  2. ​ каждый раз разного​ клиента Офиса на​Alex_ST​Почистить либо удалить журнал​ массива​
  3. ​ могут открыть файл​Применить​и​на ленте жмем​ правила отображения исправлений,​

Открытие книги с совместным доступом

  1. ​ можно отключить из​
  2. ​ книгой не может​
  3. ​Private Sub Workbook_Open()​
  4. ​ надо будет углубляться,​ из нее данные,​ документе сделан стандартным​ данные не сохранялись,​ пользователя?​ сервере проблемы.​
  5. ​: Понятия не имею,​ изменений.​Пользоваться существующими формулами​ напрямую в приложении​Имя пользователя.

​.​«В диапазоне»​ на кнопку​

​ возвращаемся в окно​ личного представления параметры​ быть проведена на​If Not ActiveWorkbook.MultiUserEditing​ его роль в​ отредактировать и вернуть​ способом на обновление​ а при сохранении​Вариант с сохранением​Но ведь признать​

  1. ​ где в ненастроенном​Почистить содержимое файла.​Добавлять в форму данных​ Excel: выбрать​Добавьте пользователей.​следует снять галочки.​
  2. ​«Доступ к книге»​ настройки. В поле​ печати и фильтры,​ сервере, а только​ Then​ этой связке очень​
  3. ​ обратно), то как​ при открытии. Как​ обязательно запрашивалось изменение​ возможен. Сегодня попробую​ это для IT-шников​ «под себя» интерфейсе​
  4. ​Отменить, а потом снова​ новую информацию​

​Файл​При желании введите сообщение.​ Аналогичную процедуру нужно​

  1. ​.​«По времени»​
  2. ​ сняв галочки около​
  3. ​ на локальном компьютере.​Application.DisplayAlerts = False​
  4. ​ пассивная (но очень​ будет происходить работа​ избежать данную проблему?​ названия шаблона. То​

​ узнать у пользователей​ — это значит​ Excel 2010 включается​ активировать совместный доступ.​

Как удалить пользователя

  1. ​Искать информацию в форме​ >​Нажмите кнопку​Доступ к книге.
  2. ​ провести и с​Открывается уже знакомое нам​Список пользователей.
  3. ​доступны следующие варианты​ соответствующих пунктов.​

​ Поэтому, если документ​ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared​ ответственная — хранить​

Как отключить режим совместного доступа в Excel

​ макроса?​TimSha​ есть был запрет​последовательность их действий​ признаться, что на​

  1. ​ режим общего доступа.​Открыть книгу xls в​Выделить исправления.
  2. ​ данных​Открыть​Отправить​ параметром​ окно управления доступа​ выбора периода просмотра​После этого не забываем​ хранится на сервере,​Вносить изменения на отдельный лист.
  3. ​End If​ данные).​Я так понимаю,​

​: Вариантов немало. Установить​ на сохранение изменений​ (хотя это очень​ их обучение (а​У меня интерфейс​ OpenOffice. И снова​​ >​

Разрешить изменять файл нескольким пользователям.

​.​«Выделять исправления на экране»​ к файлу. Во​

exceltable.com

Проблема при работе в многопользовательском режиме

​ исправлений:​​ выполнить фиксацию внесенных​
​ то, прежде всего,​End Sub​у такой связки​ что вообще никак?​
​ очередь/график работы с​ в текущем шаблоне.​ сложно).​ оно должно было​ переделан. Но когда​ сохранить ее в​
​Сначала определяемся, какую книгу​
​Общие​Чтобы поделиться книгой, нужно​. А вот напротив​ вкладке​отображение со времени последнего​ изменений, нажав на​
​ его нужно перенести​Нажимаем сохранить​ два огромных плюса:​А если очень​ файлдом. Дать каждому​Микки​Alex_ST​
​ проводиться) фирма зря​ там включаешь режим​

​ xls.​​ мы «откроем» для​, а затем — файл,​ выполнить всего три​ параметра​«Правка»​ сохранения;​ кнопку​
​ на свой локальный​Выбираем тип файла:​1. автоматически поддерживается​ надо, то как​ по файлу, а​: Т.е русскими словами​: Что значит «как​
​ потратила деньги и​ общего доступа, выбрасывается​Замечено, что запись «Файл​ редактирования сразу несколькими​ которым с ними​ простых шага.​«Вносить изменения на отдельный​находится список всех​вся хранящиеся в базе​

​«OK»​​ ПК и там​ Книга Excel c​ многопользовательская система​ поступить?​

​ затем объединять данные.​​ .. вам надо​ почистить?» А кнопочка​ нужно теперь обращаться​ такое же окошко​ заблокирован» реже появляется​
​ участниками. Создаем новый​ поделились.​В веб-браузере сохраните существующую​ лист»​ пользователей, которые работают​ исправления;​.​ уже производить все​ поддержкой макросов​
​2. данные лежат​Hugo​ Работать в Access’e​

​ сохранить текущую книгу​ «Удалить» на окошке​ за платной помощью​
​ управления доступом, как​ в новейших версиях​ файл и наполняем​Книгу могут одновременно изменять​ книгу или создайте​, наоборот, галочку следует​ с этой книгой.​те, которые ещё не​Открытие файла, в котором​ нижеописанные действия.​Заходим «Параметры Excel»​

​ отдельно, код -​​: Я в файл​ или других прогах…​ ..как … (Ваши​ зачем?​ к настоящим сертифицированным​

​ и было в​​ Excel.​ его информацией. Либо​ несколько пользователей. Это​
​ новую в OneDrive,​ установить. После того,​ Выделяем имя того,​biggrin​ просмотрены;​
​ включен совместный доступ,​После того, как книга​ / «Центр управления​ отдельно. внося исправления​ с общим доступом​ZamoK​
​ предложения) и выйти​С утра пораньше​ специалистам.​ 2003-ем (только что​На вкладке «Рецензирование» открываем​

​ открываем существующий.​​ называется совместным редактированием.​ OneDrive для бизнеса​ как все вышеуказанные​ кого нужно убрать,​начиная с конкретной указанной​
​ имеет некоторые особенности.​ создана, переходим во​ безопасностью»/ «Параметры центра​ в программу, Вы​
​ макрос писал -​: Дело в том,​ без сохранения …​
​ смело убиваете все​Lenaris​ проверил).​ меню «Доступ к​
​Переходим на вкладку «Рецензирование».​ Однако для использования​ или библиотеке SharePoint​
​ манипуляции выполнены, жмем​ и жмем на​ даты.​Запускаем Эксель и переходим​ вкладку​

​ управления безопасностью»/ Включить​​ не изменяете данные.​ и он работает.​ что это не​ и что надо​ сессии за предыдущие​: Alex_ST, Добрый день!​
​Там на вкладке​ книге».​ Диалоговое окно «Доступ​ такой возможности нужна​ Online.​ на кнопку​ кнопку​biggrin​В поле​

​ во вкладку​​«Рецензирование»​ все макросы/ ОК​ можно улучшать код​ Но правда в​ возможно идет рабочая​ запретить им сохранять​

​ дни. Не так​​У меня опять​
​ «Подробнее» есть параметры​В разделе «Правка» мы​ к книге».​ версия Excel, поддерживающая​Щелкните имя отправленного файла,​
​«OK»​«Удалить»​«Пользователем»​«Файл»​и жмем на​Юрий М​ уже работающего приложения.​ файл ничего не​ смена, специалисты работая​ в процессе работы​ уж их и​ проблемы с Excel.​

​ личных представлений​​ видим перечень пользователей.​
​Управление доступом к файлу​ совместное редактирование. В​
​ чтобы открыть его.​.​.​можно выбрать конкретного​
​. Далее жмем на​ кнопку​: gazbak, это Вы​Вы прям обнадеживаете​ пишет — только​
​ с документом только​ стандартными средствами т.е.​ много. И всё!​При сохранении книги​
​Но, оказывается, там​Выбираем имя – нажимаем​ – правка. Ставим​ настоящее время совместное​
​ Книга откроется на​После этого программа сформирует​

​После этого открывается диалоговое​​ участника, исправления которого​ кнопку​«Доступ к книге»​ кому отвечали?​catcher​ просмотр и управление.​ черпают оттуда данные,​ сохранение токо по​
​А пользователи всё-таки​ выдается сообщение «Файл​ только фильтры и​ «Удалить».​ галочку напротив «Разрешить​ редактирование поддерживается в​

​ новой вкладке веб-браузера.​​ новый лист под​ окно, в котором​ будут отображаться, или​«Открыть»​, которая размещена в​

​Татьяна​​: У меня такой​Думаю, если писать​ ни в коем​
​ кнопочке?​ вряд-ли так шутят…​ заблокирован. Повторите попытку​ параметры печати.​

​Перед удалением проверьте, что​ изменять файл нескольким​ Excel для Android,​Нажмите кнопку​ названием​ предупреждается, что если​ оставить отображение действий​.​ блоке инструментов​
​: Добрый день! Подскажите,​ вопрос. Если книгу​ и сохранять -​ случае не меняют​Микки​ Скорее всего это​ позже».​Но в любом​ пользователи закончили работу​ пользователям одновременно».​ Excel для iOS,​Изменить в Excel​«Журнал»​
​ данный участник в​ всех пользователей, кроме​Запускается окно открытия книги.​«Изменения»​ пож-та, как открыть​ эксель открыл один​ то должны быть​
​ их.​: Мнится мне бизнесспроцесс​ какой-нибудь процесс на​Позже требует сохранить​ случае, переключить разок​ с файлом.​Переходим к инструменту «Подробнее»,​ Excel Mobile и​

​. Если она не​​, в который будет​ этот момент редактирует​ себя.​
​ Переходим в директорию​.​ доступ для одновременной​ пользователь, то при​
​ вопросы, чьи изменения​TimSha​ не отлажен у​
​ сервере шалит (ну,​ файл под другим​ туда-обратно установленный режим​

​Все пользователи должны сохранить​​ чтобы настроить параметры​ Excel 2016 для подписчиков​ отображается, нажмите​ внесена вся информация​
​ книгу, то все​В поле​ сервера или жесткого​Затем активируется окно управления​ работы только 2-м​ попытке открыть уже​
​ сохранять.​: ZamoK, оговорите все​ Вас … как-то​ например, проверка лицензий,​ именем (т.е. копию​ общего доступа к​ информацию и закрыть​ многопользовательского редактирования.​

excelworld.ru

Многопользовательский режим

​ Office 365. Если у​​Изменить в браузере​

​ по редактированию данного​ его действия не​«В диапазоне»​
​ диска ПК, где​ доступом к файлу.​ пользователям.​ открытую книгу другим​

​nilem​​ условия в ситуации.​ иначе надо ..​ периодически запускается или​ его). Соответственно не​ файлу не повредит​ общий файл. Если​Нажимаем ОК. Если мы​

​ пользователя нет нужной​​, а после перезагрузки​ файла в виде​ будут сохранены. Если​

​, можно указать конкретный​​ расположена книга. Выделяем​

​ В нём следует​VovaK​ пользователем Эксель рапортует,​: Ну, вот например,​ Только XL и​ лист что-ли рользователям​ вообще вирус завёлся).​

​ могут​ — это один​ необходимо оставить журнал,​ открываем общий доступ​ версии приложения, он​ страницы —​ таблицы.​ вы уверены в​ диапазон на листе,​ её наименование и​ установить галочку около​

​: В этой теме​ что книга уже​ открыли файл на​ ничего кроме?! В​

​ посылать для заполнения​​Natalia​сохранить изменения и​ из самых надёжных​ соблюдаем инструкцию:​ к новой книге,​ может нажать кнопку​

​Изменить в Excel​​Теперь остается непосредственно отключить​ своем решении, то​ на котором будут​ жмем на кнопку​ параметра​ описано как возвращать​ открыта, открыте возможно,​ двух машинах. И​ поиске по нету​ , а лучше​
​: Всем добрый день!​ закрывают книгу без​ способов очистки распухших​Вкладка «Рецензирование» — «Исправления»​ то выбираем ей​Редактировать книгу​.​ общий доступ. Для​ жмите кнопку​ учитываться действия членов​

​«Открыть»​​«Разрешить изменять книгу нескольким​ UserName:​ но только на​ одновременно нажали кнопку​ свою тему не​ файл выложите правила​Подскажите, пожалуйста, возможно​ сохранения. Такая блокировка​ и заглючивших со​ — «Выделить исправления».​ название. Если совместное​в Excel Online​Нажмите кнопку​ этого, расположившись во​«OK»​ команды для отображения​

​.​​ пользователям одновременно»​Если перед загрузкой​ чтение.​ запуска макроса. Ведь​ изучали?​ прочитав​ ли организовать многопользовательский​ возникает периодически.​ временем файлов общего​Устанавливаем параметры «Исправлений». По​ пользование предполагается для​ и выбрать пункт​

​Открыть Microsoft Excel​​ вкладке​.​ на вашем экране.​Открывается общая книга. Теперь​. Далее жмем на​ файла проверять доменные​Можо ли как-либо​ не должно работать?​Karataev​

​Kuzmich​​ режим?​Подскажите что можно​
​ доступа.​ времени – «все».​ существующего файла –​
​Изменить в браузере​.​
​«Рецензирование»​

planetaexcel.ru

Многопользовательский режим работы с книгой (доступ к книге) — Excel 2007

​Пользователь будет удален.​​Кроме того, установив галочки​
​ при желании мы​ кнопку​ имена (которые индивидуальны),​ сделать так, чтобы​
​ Или все-таки выполняется​: ZamoK​
​: Создайте шаблон с​Чтобы одновременно можно​ сделать и как​Lenaris​ Галочки напротив «Пользователем»​
​ жмем ОК.​.​
​Когда файл откроется в​, кликаем по уже​К сожалению, одновременная работа​ около отдельных пунктов​ сможем изменить имя,​«OK»​ то можно либо​ можно было открывать​

​ в какой-то последовательности?​1)какая связь между​ расширением .xlt​

​ было работать нескольким​​ исправить данную проблему.​: Alex_ST, эти параметры​ и «В диапазоне»​Открываем меню Microsoft Office.​
​Совместный доступ в Microsoft​ Excel, может отобразиться​

​ знакомой нам кнопке​​ с файлом в​ можно включить или​ под которым будем​

​в нижней части​​ запретить дальнейшее редактирование​ книгу несколькими пользователями,​Hugo​ файлом-базой и рабочим​

​и при сохранении​​ людям в созданном​ Куда обратиться?​

​ проверены, все настроено.​​ сняты. Напротив «вносить​

planetaexcel.ru

Многопользовательский доступ к данным (Формулы/Formulas)

​ Выбираем команду «Сохранить​​ Excel дает возможность​
​ желтая панель с​«Доступ к книге»​
​ Экселе предусматривает целый​ отключить выделение исправлений​ представлены в журнале​ окна.​ файла или включить​ и чтобы можно​: Я думаю, что​ файлом ?​ файла он сам​ приложении?​Буду очень благодарена​ Спасибо за совет,​ изменения на отдельный​ как». Выбираем тот​ работать с одним​ сообщением о том,​.​ ряд ограничений. В​ на экране и​ изменения файла. Переходим​Появляется диалоговое окно, в​ ограничения, в общем​ было сохранять изменения,​

​ открытый такой файл​​зачем другие пользователи​ запросит​Микки​ за помощь.​ попробую попереключать режим​ лист» — стоит.​ формат файла сохранения,​;)

​ файлом сразу нескольким​​ что используется режим​Запускается окно управления общим​ общем файле ни​ отображение изменений на​ во вкладку​ котором предлагается сохранить​ любой сценарий.​ вносимые каждым пользователем.​ у каждого юзера​

​ хотят открыть файл-базу?​​имя сохраняемого файла​: Если это приложение​Alex_ST​ общего доступа.​ Жмем ОК.​ который «пойдет» на​ пользователям. Десять-двадцать человек​

​ защищенного просмотра. В​​ доступом. Переходим во​
​ один из пользователей,​ отдельном листе. После​«Файл»​
​ файл с внесенными​Дмитрий​Ситуация такая: книга​
​ в памяти свой.​ чтобы внести изменения?​

​ с расширением .xls​​ эксель то дать​​: Это может возникнуть​​Alex_ST​
​Откроется Журнал изменений. Его​ всех пользовательских компьютерах.​ на разных компьютерах​ таком случае нажмите​
​ вкладку​ включая главного участника,​ того, как все​. Далее перемещаемся в​ в него изменениями.​

​: А как быть​​ эксель лежит на​ Так что работать​2)файл-база настроен на​Шаблон останется неизменным​ общий доступ к​ если кто-то (или​: Так по умолчанию​ можно сохранить либо​
​Местом сохранения выбираем сетевой​ одновременно вносят какие-то​ кнопку​«Правка»​

​ не может выполнять​​ настройки установлены, жмем​ раздел​ Щелкаем по кнопке​ если компьютеры не​ одном компе, пользователи​ будет. Вот как​ многопользовательский режим ?​igorsss​ книге.. кол-во по​ что-то на сервере​ файл всё-таки в​ распечатать.​ ресурс / сетевую​ данные в один​Разрешить редактирование​, если окно было​ следующие операции:​ на кнопку​«Параметры»​«OK»​ в локальной сети.​ получают к ней​

​ решать конфликт сохранения​​ZamoK​: Добрый день, Форумчане!​ моемку неограничено особо​ ?) в режиме​ режиме общего доступа?​

​Чтобы отключить совместный доступ​​ папку, которую откроют​

excelworld.ru

Многопользовательская работа с файлом xlsm (будет ли работать макрос в одном файле на нескольких машинах)

​ документ. Где находится​​.​
​ запущено в другой​Создавать или изменять сценарии;​«OK»​.​.​Как это сделать​ доступ по сети​ изменений в тот​:​Не получается у​ если каждый свой​ общего доступа вошёл​(Тонкостей работы с​ к файлу Excel,​ предполагаемые участники. Нажимаем​
​ определенная информация, работают​В правом верхнем углу​
​ вкладке. Снимаем галочку​Создавать таблицы;​.​

​В разделе​​После указанных выше действий​ через интернет????​ со своих машин.​ сетевой файл -​Karataev​ меня использовать в​ лист курочит.​ в Сервис-Доступ к​
​ тонкими клиентами я​ на вкладке «Рецензирование»​ «Сохранить».​ определенные формулы.​ нажмите​

​ около пункта​​Разделять или объединять ячейки;​После этого на листе​«Общие»​ совместный доступ к​Казанский​Люся​ другой вопрос.​,​

​ Excel 2007 многопользовательский​​KOMETA​ книге… и удалил​ не знаю​ нажать «Доступ к​Внимание! Нельзя использовать для​«Главный пользователь» имеет возможность​Поделиться​«Разрешить изменять файл нескольким​Манипулировать с XML-данными;​ действия участников будут​

​имеется блок настроек​​ файлу с разных​: Организовать виртуальную сеть​: Разрешите одновременный доступ​IgorGo​1/ Рабочий файл​
​ режим.​: можно (см. приложение)​

​ пользователя из списка.​​.​ книге» и снять​smile

​ сохранения общего файла​​ отслеживать действия рабочей​.​ пользователям одновременно»​Создавать новые таблицы;​ отображаться с учетом​«Личная настройка Microsoft Office»​ устройств и под​ (VPN). Например, с​ к книге:​
​: я в таких​ при открытии копирует​
​На вкладке Рецензирование​ Прикрепленные файлы post_111001.GIF​
​Что происходит в​К счастью наши​ галочку напротив «Разрешить​ веб-сервер.​ группы, добавлять/удалять участников,​В поле​. Для закрепления внесенных​

​Удалять листы;​​ введенных настроек.​smile
​. Тут в поле​​ различными учетными записями​ помощью Hamachi, бесплатно:​Меню — Сервис​ случаях данные держу​ лист 1 из​ включаю​ (25.25 КБ)​ «мозгах» у сервера​
​ IT-шники пока не​ изменять файл нескольким​
​Теперь проверим и обновим​​ редактировать противоречивые изменения.​Пригласить пользователей​ изменений жмем на​Производить условное форматирование и​
​Главный пользователь имеет возможность​«Имя пользователя»​
​ пользователей будет открыт.​​djurka​ — Доступ к​ в AcceSS, а​ базы​1. Разрешения на​
​Natalia​ толстого клиента знают​ смогли убедить руководство​happy
​ пользователям».​​ ссылки:​ Как настроить совместную​введите адреса электронной​ кнопку​ ряд других действий.​ применять или отклонять​можно поменять наименование​ На это указывает​: А как сделать​
​ книге и отметьте​ пользовательские интерфейсы из​
​2/ Сейчас нет,​ изменения диапазонов и​
​: Спасибо!​ (и то вряд​ раскошелиться на тонкие​В списке должен остаться​Вкладка «Данные». «Подключения».​ работу в Excel.​ почты, разделяя их​
​«OK»​hands

excelworld.ru

Одновременный доступ в книге excel нескольких пользователей.

​Как видим, ограничения довольно​​ правки других участников.​ своей учетной записи​ то, что в​ общий доступ к​ чек-бокс «Разрешить изменять​ ExceL.​ но был настроен​ прописываю диапазоны и​Я открыла общий​ ли) только Ваши​ клиенты и толстые​

​ один пользователь –​Изменить ссылки / изменить​В книге Excel со​ точкой с запятой.​.​ существенны. Если, например,​ Для этого требуется​

​ на любую другую.​ верхней части окна​ книге, если в​ файл нескольким пользователям​с RecordSet все​ и разницы не​

​ прописываю ФИО из​​ доступ всем пользователям,​ IT-шники.​
​ сервера.​ Вы.​ связи. Если такая​ совместным доступом не​ Не забудьте выбрать​Открывается диалоговое окно, в​

​ без работы с​​ совершить следующие действия.​ После того, как​ после названия книги​ ней используются списки?​

​ одновременно…»​ чудно работает.​ было, всё ровно​ ексченджа​ теперь они могут​Lenaris​Поэтому все работают​Lenaris​ кнопка отсутствует, в​ все задачи можно​

​ параметр​​ котором предупреждается, что​ XML-данными зачастую можно​Находясь во вкладке​
​ все настройки выполнены,​ отображается наименование режима​

​ Спасибо.​
​catcher​nilem​
​ ругается​
​2. Разрешаю общий​
​ при нажатии на​
​: Alex_ST, получается, что​

​ по-старинке на полнофункциональных​: Здравствуйте!​ листе нет связанных​ выполнять.​Может вносить изменения​ выполнение данного действия​ обойтись, то без​

​«Рецензирование»​ жмем на кнопку​ доступа –​San4uS​

​: большое спасибо за​​: Да, спасибо. Будем​
​Karataev​ доступ​
​ кнопки в приложении​
​ слетает доступ, так?​
​ компах и используют​
​Помогите решить проблему​

​ файлов.​​Нельзя:​
​. Когда все будет​ сделает невозможным совместное​ создания таблиц работа​, щелкаем по кнопке​
​«OK»​«Общий»​
​: Очень много полезного​ ответ, сделал, это​

​ мучить Access​
​: ZamoK вопрос остался​Ошибок или каких-либо​
​ генерировать данные в​
​ Тогда почему это​
​ обычные файл-сервера в​
​ при работе с​

​Переходим на вкладку «Состояние»,​
​Создавать таблицы Excel.​ готово, нажмите кнопку​ использование документа. Если​
​ в Экселе вообще​«Исправления»​.​. Теперь файл снова​ узнал, спасибо!​

​ как раз то,​​IgorGo​ по связи. Например​

​ «фи» Excel не​​ общей таблице.​ возникает периодически, а​ интранете)​ файлом Excel 2010​ чтобы проверить имеющиеся​

​Создавать, менять или просматривать​​Поделиться​ вы твердо уверены​ не мыслится. Что​

​. Выбираем пункт​Теперь можно приступать к​ можно переносить на​Guest​ что нужно.​: а за это​ связь бывает такая​ говорит, но при​

​Единственное, возможно ли​​ не постоянно?​Lenaris​ в многопользовательском режиме.​
​ связи. На работоспособность​ сценарии.​

​.​​ в принятом решении,​ же делать в​«Принять/отклонить исправления»​

​ работе с документом.​​ сервер.​: Спасибо за подсказку!​А можно ли​ можно не переживать.​ между файлами: в​

​ этом люди которые​​ сделать так, чтобы​Alex_ST​

​: Alex_ST, да сам​​С файлом работают​

planetaexcel.ru

​ связей указывает кнопка​

Содержание

  1. Сведения о совместном редактировании в Excel
  2. Общие сведения о совместном редактировании
  3. Принципы совместного редактирования
  4. Ситуации, когда может потребоваться адаптировать решение к среде совместного редактирования
  5. Надстройки, имеющие внутреннее состояние в памяти за пределами содержимого книги
  6. Обходной путь
  7. Надстройки, использующие события
  8. Сохранение событий
  9. События изменения
  10. Пример сценария: проверка данных
  11. Пример
  12. Пример сценария: согласованность данных
  13. Потенциальные проблемы с событиями изменений
  14. Пример сценария: визуализация данных
  15. Пример
  16. Пример сценария: область задач навигации
  17. См. также
  18. Поддержка и обратная связь
  19. Обновляемый многопользовательский макрос

Сведения о совместном редактировании в Excel

Узнайте, как работает совместное редактирование в Excel и как может потребоваться настроить надстройку или макрос для плавной интеграции с совместным редактированием.

Совместная работа доступна всем пользователям Excel Online. Эта функция также доступна в Excel для Windows Desktop, но только для Office 365 клиентов.

Общие сведения о совместном редактировании

Совместная работа позволяет редактировать книгу, размещенную в облаке (например, OneDrive, OneDrive для бизнеса или SharePoint Online) одновременно с другими пользователями. При каждом сохранении все, кто редактит книгу в это время, могут видеть изменения. Если включено автосохранение , вы можете просматривать изменения книги в режиме реального времени. Если вы не готовы к тому, чтобы другие пользователи могли видеть изменения, вы можете отключить автосохранение, пока не будете готовы предоставить общий доступ к изменениям и получать изменения других пользователей.

Принципы совместного редактирования

Excel автоматически синхронизирует изменения, внесенные в книгу (как пользователем, так и кодом). Например, предположим, что код выполняется в экземпляре пользователя и изменяет содержимое ячейки следующим образом: Range(«A1»).Value = «myNewValue» . Excel позаботится об отправке этого изменения другим соавторам.

Теперь предположим, что в экземпляре другого пользователя выполняется код, который проверяет содержимое этой ячейки следующим образом: MsgBox Range(«A1»).Value . Второй пользователь увидит значение «myNewValue» , заданное первым пользователем.

Однако Excel не будет автоматически синхронизировать переменные, созданные кодом за пределами содержимого книги. Например, предположим, что код считывает значение из ячейки, а затем загружает его в переменную:

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

Ситуации, когда может потребоваться адаптировать решение к среде совместного редактирования

Так как существующие надстройки и макросы могут использовать Excel для удобной передачи изменений, внесенных в книгу, соавторам, обычно можно использовать код в этой новой среде без внесения изменений или обновлений. Однако в двух случаях может потребоваться адаптировать код, если вы хотите, чтобы он работал гладко в параметре совместного редактирования:

События BeforeRemoteChange и AfterRemoteChange были добавлены, чтобы вы могли управлять удаленными изменениями, если это применимо.

Надстройки, имеющие внутреннее состояние в памяти за пределами содержимого книги

Представьте себе надстройку, которая позволяет пользователю создавать пользовательские диаграммы на основе данных в книге Excel. Эта надстройка загружает данные для диаграмм пользователя в скрытый лист книги. Когда пользователь открывает файл, содержащий пользовательские диаграммы, надстройка считывает данные на скрытом листе и загружает диаграмму в память. Когда пользователь редактирует диаграмму, эта структура в памяти обновляется и записывается в файл перед каждым сохранением. Эта надстройка предполагает, что единственный раз, когда необходимо прочитать скрытый лист и загрузить его в память, — это открытие файла.

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

  • Предположим, пользователь А открывает файл и начинает просматривать существующую пользовательскую диаграмму.
  • Во время этого пользователь Б открывает тот же файл и начинает вносить изменения в настраиваемую диаграмму (например, изменяет тип диаграммы).
  • Это изменение будет сохранено на листе надстройкой на компьютере пользователя B, но пользователь А никогда не увидит изменения, пока не перезагрузит файл.

Обходной путь

Старайтесь, насколько это возможно, не делать предположений о том, когда можно изменить данные книги. В этом случае можно изменить надстройку, чтобы она реагировала на событие AfterRemoteChange , а затем проверить значения скрытого листа, чтобы узнать, нужно ли их снова прочитать надстройке, чтобы разрешить пользователю A просматривать изменения диаграммы, внесенные пользователем B. Надстройка предназначена для запуска при изменении диапазона диаграммы. Это происходит при загрузке и может произойти при удаленном изменении. Таким образом, ваша логика в AfterRemoteChange должна повторно запустить надстройку.

Надстройки, использующие события

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

Сохранение событий

При использовании в коде событий сохранения, таких как BeforeSave и AfterSave, могут возникнуть проблемы. Дополнительные сведения см. в разделах Потенциальные проблемы с событиями сохранения и Автосохранение.

События изменения

По умолчанию код обычно не требует обработки изменений от удаленных пользователей. Однако в некоторых случаях обработка удаленных изменений может вызвать проблемы. Здесь рассматриваются два примера сценариев.

Пример сценария: проверка данных

Событие изменения активируется при изменении определенного диапазона в книге. Затем код надстройки проверяет изменение и, если проверка завершается ошибкой, уведомляет пользователя во всплывающем окне. Однако если все удаленные пользователи, совместно работающие над этой книгой, получают уведомление о сбое проверки, не связанном с их собственными изменениями, это может привести к ухудшению работы.

Пример

В этом примере была создана диаграмма, показывающая, сколько было сделано для продажи различных десертов. Ни стоимость, ни количество проданных товаров не должны быть отрицательными, поэтому существует проверка, которая отображает сообщение пользователю. При отправке недопустимого значения удаленным пользователям сообщение проверки не должно отображаться для них.

Поэтому в этом случае нет необходимости подписываться на событие BeforeRemoteChange или AfterRemoteChange .

Рис. 1. Пример диаграммы, представляющей продажи десерта

Пример сценария: согласованность данных

Активируется событие изменения, и код надстройки синхронизирует данные в книге с данными в другой части книги или во внешней системе. Если удаленный пользователь получает изменение, из-за чего код надстройки синхронизирует одни и те же данные, это может привести к снижению производительности удаленного пользователя или дублированию данных во внешней системе.

Потенциальные проблемы с событиями изменений

Хотя обычно код обработчика событий не будет выполняться в ответ на изменения, внесенные удаленным пользователем, поведение по умолчанию , когда события изменений не запускаются, могут вызвать проблемы. Ниже приведены некоторые примеры проблем и способы их решения с помощью событий BeforeRemoteChange и AfterRemoteChange .

Пример сценария: визуализация данных

Надстройка отображает точки данных на карте на основе данных о расположении, найденных в диапазоне в книге. Если пользователь изменяет какие-либо данные о расположении, все удаленные пользователи должны получить это изменение, чтобы можно было обновить карту каждого пользователя.

Пример

Предположим, что вы создали настраиваемую карту. В этом примере можно добавить код для изменения данных о расположении, а затем обновить карту. Книга предоставляется другим пользователям в другом городе. Если автосохранение включено, изменение передается удаленному пользователю, но карта этого пользователя не будет обновлена.

Теперь используйте событие AfterRemoteChange , чтобы добавить код, который обновляет карту. Последующие изменения, отправленные удаленному пользователю, используются для обновления карты.

Рис. 2. Пример карты Лондона с несколькими достопримечательностями

Пример сценария: область задач навигации

Надстройка отображает все текущие вкладки книги в области задач, чтобы упростить навигацию. Если пользователь добавляет лист, все удаленные пользователи должны получить это изменение, чтобы в области задач каждого пользователя отображались ссылки на новый лист.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Обновляемый многопользовательский макрос

Я не умею программировать, но очень люблю!
Немного измененная цитата художника Васи Ложкина.
Статьей хочу поделиться опытом поднятия многопользовательской системы на VBA Excel.
На момент принятия решения о создании гибкого приложения, было порядка 7 макросов, работающих по большим объемам (несколько файлов от 20 тыс. строк до 370 тыс. строк), весящих от 50 килобайт до 12 мегабайт, каждый из которых был написан в соответствии со знаниями существующими на момент написания. Каждый макрос изменялся, дописывался, исправлялся в части ошибок, а учитывая, что этими макросами пользовались более 60 человек, не все из которых отслеживали изменения, постоянно дергали меня показывая очередную ошибку, которую я уже исправил и выслал на всех. Объяснять толпе народу как правильно пользоваться макросами, я бросил сразу, так как кто то не услышит, кто то не поймет о чем речь, кто-то возьмет уже отформатированную таблицу в работу с макросами, а я не могу предугадать кто и как изменяет таблицы.

Необходимо было сделать один код, а не 60 копий каждого изменения, высланного по почте.

Решение быстро пришло в голову, а гугл быстро выдал мне результаты по программному изменению кода VBA, которая в последствии была откатана на практике. Итак, текст без картинок не интересен, вот первая, это структура приложения, которая выглядет так:


Пользователь открывая файл, активируя событие excel «открытие книги» выполняет процедуру, находящуюся в файле «клиенте». Процедура формирует меню, читая файлы на сети. Нажимая на кнопку нужного макроса, выполняется действие по созданию модуля в клиенте, из файла находящегося на сети, выполняет действия и уничтожает процедуру внутри себя.

Что мы получаем:
— файл для любого макроса всегда один.
— нажимая на выполнение какого либо макроса, пользователь будет всегда пользоваться самым последним кодом, что упрощает поддержку макросов.
— возможность писать лог файл по ошибкам, с указанием пользователя, на случай необходимости избить того кто все испортил.

Далее будет много копипаста по коду, измененного под мои задачи, я бы с удовольствием указал авторов, но честно не знаю, много кода брал с буржуйских ресурсов, что то с российских, что то придумано мною, все это копилось в течении полугода минимум, так что заранее большое сорри перед первоисточниками, если чего, пишите, удалю.

Итак, практическая часть.

Вешаем событие на открытие книги:

Код не хитрый, концепция одна, дать пинок для дальнейших действий
Процедура create_module_for_file:

Три строки три действия, в начале нам необходимо подобрать файл с модулем. За это отвечает следующая функция:

Далее создаем модуль:

И пишем в модуль код из файла

Получив файлы, подгружаем меню.
При загрузке формируется меню, которое помещается в надстройки

По коду:
-для начала удалим, на случай если будет обновление:

Панель создали, теперь создаем непосредственно меню, которое будет создавать кнопки непосредственно по каждому файлу с макросами.

После того как меню создано, добавляются кнопки. Меню строилось по принципу файл -> одна кнопка. В свою очередь по одному файлу с макросом может быть несколько процедур, которые необходимо вызывать, вот в под меню их и суем. Данный код создает 3 кнопки:

Результат примерно вот:

В режиме написания изменил концепцию работы. Задача стояла в использовании последней версии кода при каждом нажатии «выполнить макрос». Учитывая эти обстоятельства, к клиенту будут загружаться определенные файлы, назовем их индексным файлам, то есть постоянно присутствующим после открытия файла модулям, это «menu» и «list action», а непосредственно файлы макросов будут подгружаться по нажатию кнопки. В чем их смысл: файл меню формирует меню 🙂

В меню мы видим событие, ссылающееся на процедуру «action1…x», которая сидит во втором файле «list_action». Посмотрим на его содержимое

Что мы делаем, во-первых нам необходимо удалить модуль для того что бы его заного загрузить и использовать, мало ли код изменен. Далее мы открываем файл, создаем модуль и пишем в него код из файла.
После этих манипуляций нам необходимо вызвать процедуру, выполняющую манипуляции, которые подразумевались нажатием на кнопку выполнения процедуры.
Здесь интересно)
Если мы укажем имя процедуры, которая находится непосредственно в коде выше, у нас процедура action11 ругнется на то что не может найти процедуру «kart_view», и правильно, ведь по факту ее на момент нажатия кнопки исполнения процедуры нет, на этот случай использован лайфхак, создается функция, которая в свою очередь вызывает эту процедуру, код вот:

То есть на момент вызова «kart_view» из «action11a», данная процедура уже будет загружена в модуль, vba подвоха не видит.
Получаемый итог: жмем на кнопку, загружается код в модуль, выполняется. В случае повторного выполнения модуль удаляется, грузится заново, выполняется. При закрытии файла книга отчищается от всего, для того что бы не занимать место и спокойно лежать до следующего открытия.
Еще пару слов по обработке больших файлов, думаю будет интересно. Как говорилось, файлы используются большого объема, более 300 тыс.строк, из которых необходимо выбрать, как правило, тыс. 10-30 и работать с ними.
Если бы меня с пол года назад спросили как сделать выборку, я бы не ведая сказал бы цикл с условием. В последствии было перепробовано много способов, опишу каждый, так, для инфо, кроме тех что можно реализовать стандартными функциями excel.
Исходные данные: есть таблица 300 тыс строк, известно 10 тыс значений, которые нам нужны.
1) Вначале я попытался сделать выборку циклом

Что получаем, если не завершать цикл, получается что нам 10000 раз необходимо перебрать 300000 строк для поиска результата. Отрабатыва vba будет примерно 500 строк в секунду, итого
3000000000/500 = 6000000 секунд, (100000 минут или 1666,66 часов или 69 дней или 9 недель или …)
А результат как правило нужен здесь и сейчас, ну или через пару минут максимум, так что сразу нет.
2) Второй используемый мною способ – работа с mysql сервером
Для работы с mysql сервером, который уже был, для другого проекта, был необходим драйвер mysql ODBC, их мне было известно 2, версия 3.51, и версия 5.1 Выбор пал на 3.51, так как второй, по обсуждениям его работы на форумах, не очень хорошо работал с кодировками, а базу хотелось в utf8
Драйвер мне поставили, и первая кочка, на которой я споткнулся – права доступа

То есть нужна учетная запись для подключения из вне, в нашем случае это будет vba-макрос который матерился так:

Покурив мануалы sql, нашел это

То есть, по запросу выше, создается учетная запись для любого пользователя с рут правами.
Естественно рут прав мне никто не дал и проект использующий mysql сервер для хранения данных, был «заморожен» так как в перспективе нужно было писать в базу данные, у меня было только чтение.
Для оценки эффективности: один и тот же макрос используя переборы с помощью циклов работал 59 секунд, с sql удалось сделать все то же самое за 3,5-4 секунды, то есть реально удалось ускориться более чем в 10 раз.
По коду хорошая статья вот здесь: egregors.blogspot.ru/2013/05/mysql-vba-excel-mysql.html
3) Продолжая курить тему sql, начал работу по работе с access.
Код получается адовый, но рабочий.

Данный способ работает медленнее чем mysql, почему то, но вполне приемлем для использования. Но не мне…
Отказался я от него в первый же раз, когда нужна была система при котором пользователь в определенной папке создает базу и пишет туда 2 таблицы по 300 тыс.строк, для их сравнения и вычисления. При тестах у меня получилась база размером около 600 метров, учитывая что в перспективе этим макросом одновременно может воспользоваться 50 человек, получается папка размером в примерно 25-30 гигов, за которую меня админы четвертовали бы сразу.
4) Собственно способ на котором я остановился. Да, работает медленнее второго и третьего способа, но данные недостатки компенсируются функциональностью. Sql запрос по книге

Вот… Если брать условия примера, на вскидку где то секунд 10 соберется строка для запроса, секунд 25 повисит запрос с выборкой, секунд 10 на отработку в зависимости от необходимого результата.
Как то так.

Источник

 

San

Пользователь

Сообщений: 41
Регистрация: 13.05.2014

Добрый день!
Прошу помощи в следующем:
Есть файл с пользовательской формой на VBA. Задача в том, чтобы с этим файлом можно было работать двум или более пользователям одновременно.
Файл находится в локальной сети и доступен для пользователей.

Подскажите, пожалуйста, что нужно прописать в коде, чтобы эту форму могли одновременно заполнять несколько пользователей. Или может быть какой-то другой есть способ?

Файл приложен.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#2

12.01.2022 19:31:51

1. Мне кажется, что вы путаете кислое с пресным.

Цитата
San написал:
Подскажите, пожалуйста, что необходимо дописать, чтобы файл и макрос были доступны для одновременной работы нескольких пользователей?

Для этого необходимо и достаточно включить общий доступ.
2. Но следует осознавать, что макрос и форма, это не есть тождество.

Цитата
San написал:
что нужно прописать в коде, чтобы эту форму могли одновременно заполнять несколько пользователей

Или я сильно ошибаюсь, или ничего, ибо сие не возможно не только в Excel, но и в базах данных.
Таблица, это статичный компонент, хранилище данных. Форма — динамический компонент, создающийся под каждого конкретного пользователя.

Однако, ежели, все же, требуется
<< чтобы такую форму могли одновременно заполнять несколько пользователей >>
то см. п.1

Изменено: RAN12.01.2022 19:56:08

 

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

т.е. нужно в корне переосмыслить проект
и
вы еще вчера не могли форму запустить в немодальном режиме, а сегодня уже затеваете многопользовательскую систему)) это похвально, но…
а по Сеньке-ли шапка? хотя, даже если ответ отрицательный — это временно, одно не известно — сколько времени должно пройти

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

#4

12.01.2022 22:37:50

Цитата
San написал:
Или может быть какой-то другой есть способ?

MS Access

 

_Igor_61

Пользователь

Сообщений: 3007
Регистрация: 18.07.2016

#5

13.01.2022 08:01:39

Цитата
Ігор Гончаренко написал:
это похвально, но…

Продолжу:
Исходя из формулировок и содержания вопросов San, Вы  очень скоро натолкнетесь на подводные камни типа:
— Много пользователей на разных машинах => ОБЯЗАТЕЛЬНОЕ в макросах указание ThisWorkBook и др.ссылки (об этом похоже Вы и не думали пока)
Это только один камешек. Поэтому

Цитата
Ігор Гончаренко Вам написал:
нужно в корне переосмыслить проект

Лучше в самом начале продумать что и как должна делать программа, а не наращивать ее по мере возникновения новых хотелок.
=> San, опишите в новой теме задачу-максимум, что должна делать программа, откуда данные берутся и как заносятся, где находятся макросы, где база (и насколько она вырастет со временем) и пр. и потом можно будет идти пошагово по темам, по мере решения задач…
Сейчас Вы решите один вопрос, а потом может получиться так, что сам подход был неверным. Проще новое с нуля сделать, чем переделывать, пока не поздно :)

129 / 67 / 31

Регистрация: 24.07.2018

Сообщений: 787

1

Многопользовательский доступ к книге с кучей макросов

14.08.2019, 13:27. Показов 6580. Ответов 4


Студворк — интернет-сервис помощи студентам

Добрый день. Сегодня подошел начальник, говорит что к документу эксель можно сделать многопользовательский доступ, на что я ответил что для наших книг такое не возможно.
В общем, есть книга. Книга представляет собой базу данных заказов, где менеджеры набивают заказы(для набора используются макросы, формы и т.д.). Возможно ли его сделать многопользовательским? Что то мне кажется что макросы не будут работать.



0



370 / 268 / 93

Регистрация: 18.11.2015

Сообщений: 990

14.08.2019, 15:01

3

Проблема может быть здесь:

Цитата
Сообщение от MaksimkaI
Посмотреть сообщение

где менеджеры набивают заказы

То есть, если они вбивают заказы одновременно на один лист, несомненно будет коллизия. И excel предложит выбрать чей заказ оставить, второй соответственно потеряется.
Здесь либо для каждого менеджера заводить свой лист, и затем объединять их все на один общий, либо в общий доступ выкладывать только обработчик с формами, а каждый менеджер ведет свой локальный файл и затем сращивать их



0



129 / 67 / 31

Регистрация: 24.07.2018

Сообщений: 787

14.08.2019, 15:08

 [ТС]

4

ArtNord, В общем я протестировал немного. Это надо всю книгу переделывать. Т.к. При удалении записей в архив уже все дублируется.Номера заказов будут смешиваться. Идея так себе.

Добавлено через 2 минуты
Мне легче на c# все переписать + sql.



0



370 / 268 / 93

Регистрация: 18.11.2015

Сообщений: 990

14.08.2019, 15:10

5

Цитата
Сообщение от MaksimkaI
Посмотреть сообщение

.Номера заказов будут смешиваться.

Свой префикс каждому менеджеру

Цитата
Сообщение от MaksimkaI
Посмотреть сообщение

+ sql

самый лучший вариант



0



Like this post? Please share to your friends:
  • Vba excel методы ячейки
  • Vba excel методы строки
  • Vba excel методы массивов
  • Vba excel метод гаусса
  • Vba excel метод sort как