yuas Пользователь Сообщений: 8 |
Уважаемые эксперты, Есть файл с макросами и защитой листов. При изменении файла в режим «Общий доступ» файл пишет, что в файле есть макросы и они не будут работать. Вопросы: Изменено: vikttur — 05.09.2021 18:24:52 |
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#2 05.09.2021 18:31:18
напишите для начала, как именно назначаете общий доступ и в какой это версии офиса. Потому что начиная с 2016 по умолчанию общий доступ к книгам назначается путем помещения копии файла в облачное хранилище и доступ к нему организовывается при помощи офиса он-лайн, в котором макросы просто не реализованы.
смотря что Вы хотите от защиты. Если Ваши макросы в процессе работы снимают и устанавливают защиту на листы — то идея провальная, т.к. ни в одной версии Excel не поддерживается изменение параметров защиты общих файлов. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
yuas Пользователь Сообщений: 8 |
В моем файле Макросы некоторые в файле снимают и возвращают защиту листов. |
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#4 06.09.2021 20:14:49
ну для начала хотя бы прочитать то, что я написал выше. Если макросы меняют параметры защиты — то работать они не будут. Точнее будут — но будут выдавать ошибки.
Угадывать на что именно ругается не хочется, поэтому лучше приложите скрин. Возможно, у Вас в файле есть умные таблицы и Excel пишет про XML и все в этом духе. Такая тема была прямо вот на днях, не должна была убежать далее 2-ой страницы. Возможно, Вам поможет что-то из этой статьи: Каждому пользователю свой лист/диапазон Там в самом начале рекомендации по разграничению диапазонов — возможно, это решит часть Ваших проблем. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
yuas Пользователь Сообщений: 8 |
когда пытаюсь сделать общий доступ, появляется окошко с надписью «В книге содержатся макросы, написанные на Visual Basic. Изменить или просмотреть макросы в файлах совместного доступа невозможно» |
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#6 07.09.2021 15:58:57 Это решить нельзя. Потому что Вы выкладываете книгу в общий доступ в новых версия, про которые я писал уже выше:
как Вы решите проблему того, что макросы в версии он-лайн не реализованы? Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#7 07.09.2021 16:04:37
Прошу прощения, что вставляю свои 5ть копеек. Думаю, что, возможно, подойдёт переход на гугл таблицы и замена макросов VBA на google apps scripts, с учётом всех нюансов и ограничений. <#0> |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#8 07.09.2021 16:27:36
как минимум необходимо знать эти нюансы и что должен делать файл. Возможно, переход на гугл и вариант. А возможно и нет. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
RAN Пользователь Сообщений: 7091 |
#9 07.09.2021 16:38:50
Дим, а старый общий доступ остался? |
||
RAN, да. Надо зайти в настройку Панели Быстрого Доступа -выбрать Все команды и найти там «Общий доступ к книге(старые версии)». Вынести на панель или на другую вкладку. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
|
yuas Пользователь Сообщений: 8 |
|
New Пользователь Сообщений: 4581 |
yuas, кто вам мешает проверить это самому и рассказать нам? Изменено: New — 07.09.2021 19:21:29 |
Когда тогда? yuas, Вы уж извините, но то ли Вы вообще не читаете ответы, то ли я Вас совсем не понимаю. Задавайте более конкретные вопросы, что ли. Я же все расписал еще в первом сообщении. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
|
RAN Пользователь Сообщений: 7091 |
#14 07.09.2021 19:56:12
Будет. |
||
Скрипты Office можно предоставлять другим пользователям в вашей организации. Когда вы предоставляете общий доступ к скрипту, вы присоединяете его к книге, позволяя другим пользователям просматривать и запускать его.
Важно: Любой, кто может редактировать книгу, может просматривать и запускать вложенные скрипты.
Предоставление общего доступа к сценарию в книге
Чтобы поделиться сценарием в книге, можно использовать страницу со сведениями о сценарии. Скрипты хранятся в OneDrive. При совместном использовании вы создаете ссылку на него в открытой книге.
-
На вкладке Автоматизация выберите скрипт, к которому вы хотите предоставить общий доступ, из коллекции или списка Все скрипты . Обратите внимание, что вы можете предоставлять доступ только к собственным сценариям. У вас может быть доступ к другим скриптам, к которым вы предоставили общий доступ, или к встроенным примерам скриптов, которым невозможно предоставить общий доступ.
Откроется редактор кода, в котором отобразится выбранный скрипт.
-
В меню Дополнительные параметры редактора кода (…) выберите Поделиться.
-
Прочтите сообщение о том, кто может использовать общий скрипт, и выберите Поделиться , чтобы продолжить. В коллекции скриптов, к которым вы предоставили общий доступ, теперь имеет другой значок. Это означает, что она была предоставлена в книге общего доступа и может быть запущена любым, кто может редактировать книгу.
Примечания:
-
Общие сценарии могут запускаться любым пользователем, обладающим разрешением на запись в книге. Все изменения, внесенные сценарием, записываются как правки пользователя, запустившего сценарий, а не его владельца.
-
Все изменения, вносимые вами в общий сценарий, автоматически становятся доступны другим пользователям. Сценарий обновляется при сохранении. Пользователям сценария может потребоваться повторно открыть его, если при внесении изменений у них была открыта старая версия.
-
Сценарий Office можно использовать только в организации. Скрипты не могут предоставляться внешним пользователям.
-
Вы также можете предоставить общий доступ к скрипту, создав кнопку. Дополнительные сведения см. в статье Создание кнопки для запуска сценария Office.
Отмена общего доступа к сценарию
Вы можете отменить общий доступ к любому сценарию в книге, открытой для редактирования. Обратите внимание, что если вы отмените общий доступ к скрипту, который у вас нет, вы не сможете добавить его обратно. Владелец скрипта должен будет сделать это самостоятельно.
-
Выберите скрипт в коллекции сценариев.
-
В меню Дополнительные параметры редактора кода (…) выберите Остановить общий доступ.
-
Если вы являетесь владельцем сценария, в диалоговом окне Прекратить общий доступ в этой книге можно выбрать Остановить общий доступ во всех книгах. Убедитесь, что вы хотите прекратить общий доступ, так как его невозможно отменить. Чтобы повторно предоставить общий доступ к скрипту, вам придется вручную повторно поделиться им в каждой книге. Когда все будет готово, выберите Остановить общий доступ.
Примечание: Чтобы предоставить общий доступ к скрипту определенному пользователю, а не в книге, перейдите в папку Документы > OneDrive > папку Скрипты Office и поделитесь файлом скрипта.
Разрешить выполнение общего скрипта
При первом запуске скрипта, который вам не принадлежит, откроется диалоговое окно Запуск разрешения. В этом случае необходимо разрешить скрипту просматривать и редактировать книгу. Если вы доверяете автору сценария, выберите Разрешить.
Примечание: При первом запуске скрипта также открывается диалоговое окно Запуск разрешения каждый раз, когда скрипт обновляется другим коллегой в вашей организации.
См. также
Общие сведения о сценариях Office в Excel
Параметры сценариев Office в Microsoft 365
Создание кнопки для запуска сценария Office
Нужна дополнительная помощь?
129 / 67 / 31 Регистрация: 24.07.2018 Сообщений: 787 |
|
1 |
|
Многопользовательский доступ к книге с кучей макросов14.08.2019, 13:27. Показов 6547. Ответов 4
Добрый день. Сегодня подошел начальник, говорит что к документу эксель можно сделать многопользовательский доступ, на что я ответил что для наших книг такое не возможно.
0 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
14.08.2019, 15:01 |
3 |
Проблема может быть здесь:
где менеджеры набивают заказы То есть, если они вбивают заказы одновременно на один лист, несомненно будет коллизия. И excel предложит выбрать чей заказ оставить, второй соответственно потеряется.
0 |
129 / 67 / 31 Регистрация: 24.07.2018 Сообщений: 787 |
|
14.08.2019, 15:08 [ТС] |
4 |
ArtNord, В общем я протестировал немного. Это надо всю книгу переделывать. Т.к. При удалении записей в архив уже все дублируется.Номера заказов будут смешиваться. Идея так себе. Добавлено через 2 минуты
0 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
14.08.2019, 15:10 |
5 |
.Номера заказов будут смешиваться. Свой префикс каждому менеджеру
+ sql самый лучший вариант
0 |
Реализовать многопользовательский доступ к файлу с макросами |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Хитрости »
12 Июнь 2012 187284 просмотров
Каждому пользователю свой лист/диапазон
Очень часто на своих тренингах и в форумах я слышу вопрос: как защитить доступ к книге так, чтобы для каждого пользователя был доступен только свой лист/листы? А другие ячейки или листы были недоступны для изменения или просмотра? Или скрыть отдельные столбцы с глаз пользователя? Часть подобного функционала предоставляется стандартными средствами Excel, а другая(например, доступность просмотра только конкретных листов) достигается только через макросы. В этой статье хочу привести несколько примеров реализации подобных разграничений прав между пользователями, их плюсы и минусы.
- Разграничение доступа к ячейкам стандартными средствами
Разграничение прав доступа при помощи VBA
- Доступ пользователям только к определенным листам
- Доступ пользователю к определенным листам и возможность изменять только отдельные ячейки
- Доступ к определенным листам и скрытие указанных строк/столбцов
- Практический пример с использованием администратора
Разграничение доступа к ячейкам стандартными средствами
Для разграничения доступа к ячейкам на листе можно воспользоваться инструментом Разрешить изменение диапазонов(Allow Users to Edit Ranges), расположенном на вкладке Рецензирование(Review), группа Изменения(Changes):
Это стандартный инструмент, для использования которого нет необходимости подключать что-то дополнительно и он относительно прост в использовании.
Данный инструмент позволяет назначить каждому отдельному диапазону ячеек свои пароли, диапазоны могут располагаться на разных листах книги или на одном листе:
Например, сотрудники коммерческого отдела в общем файле бюджета(картинка выше) должны иметь возможность заполнять только ячейки строк со статьями выручки (строки 8-11, 13-14), а производственный отдел строки 18-22, в которых расположены статьи по расходам производственного отдела. При этом сотрудники коммерческого отдела не должны иметь возможность изменять данные статей другого отдела – каждый только данные своих статей.
Для начала необходимо для сотрудников каждого отдела создать отдельные диапазоны, к которым они будут иметь доступ. Для этого переходим на вкладку Рецензирование(Review) -группа Изменения(Changes) —Разрешить изменение диапазонов(Allow Users to Edit Ranges). Появится диалоговое окно создания/изменения диапазонов:
Нажимаем Создать(New). Появится другое окно, в котором необходимо указать имя диапазона
(Title)
(
коммерческий
), доступные для изменения ячейки
(Refers to cells)
(
C8:N11;C13:N14
) и вписать пароль
(Range password)
(
1111
):
После нажатия Ок появится окно подтверждения пароля. Необходимо указать тот же пароль, что был указан ранее для данного диапазона.
Примечание: если нажать на кнопку Разрешения(Permissions), то можно установить доступ без пароля для конкретных групп пользователей, если группы настроены политикой доменной сети.
Точно так же создаем второй диапазон – «производственный», но для него указываем другой пароль(например –
2222
). После этого у нас в главном окне управления диапазонами будет два диапазона:
Здесь можно еще раз проверить все ли правильно указано, при необходимости изменить (так же изменить диапазоны можно в любое время, вызвав данное окно с вкладки Рецензирование(Review) —Разрешить изменение диапазонов). После этого нажимаем Применить(Apply).
Теперь, чтобы такая защита сработала необходимо непосредственно защитить лист. Это можно сделать либо сразу из этого же окна, нажав кнопку Защитить лист, либо закрыв окно перейти на вкладку Рецензирование(Review) и в группе Изменения(Changes) выбрать Защитить лист(Protect sheet):
В появившемся окне проставляем галочки для тех действий, которые мы хотим разрешить делать пользователю на защищенном листе без ввода пароля(например, на картинке выше помимо стандартного выделения ячеек разрешена вставка столбцов. Подробнее про защиту листов и ячеек можно прочитать в статье — Защита листов и ячеек в MS Excel). Указываем пароль (например
3333
), подтверждаем пароль в появившемся окне и нажимаем Ок. Лист защищен.
Что важно: не следует указывать здесь пароль, который совпадает хотя бы с одним из паролей для отдельных диапазонов. Думаю, понятно почему: чтобы защиту не могли снять те, кому этого не положено делать.
Теперь остается сообщить сотрудникам отделов их пароли: производственный — 2222, коммерческий – 1111.
При первой попытке изменить данные в ячейках C8:N11;C13:N14- будет запрошен пароль на изменение ячеек созданного диапазона «коммерческий» (1111):
Если пользователю известен пароль для диапазона – его необходимо будет ввести лишь один раз. В дальнейшем для ввода данных в ячейки этого диапазона вводить пароль не придется до тех пор, пока файл не будет закрыт. После повторного открытия файла пароль необходимо будет указать заново.
Однако, если сотрудник другого отдела попытается изменить ячейки производственного отдела и пароль ему неизвестен – изменить данные этих ячеек не получится.
Также ни сотрудники коммерческого отдела, ни сотрудники производственного отдела не смогут изменить данные столбцов А и В(№ и наименование статьи), заголовки таблицы(строки с 1-ой по 7-ю) и строки с итоговыми формулами (12, 15 и т.д. – закрашенные зеленым). Они смогут изменять только те ячейки, которые перечислены в назначенных каждому отделу диапазонах. Внести данные в другие ячейки(не перечисленные в разрешенных диапазонах) можно будет исключительно сняв общий доступ с книги, а после этого защиту с листа –Рецензирование(Review) -группа Изменения(Changes) —Снять защиту листа(Unprotect sheet). Но снять общую защиту сможет только тот, кто её создавал и кому известен «главный» пароль. Как правило это администратор или некий «смотрящий» файла и другие пользователи этот пароль не знают.
Плюс подобного метода в том, что такая защита может быть установлена для книги в общем доступе(подробнее про книги с общим доступом можно прочитать в статье — Ведение журнала сделанных в книге изменений).
Что необходимо учитывать для книг с общим доступом: создавать диапазоны для пользователей и устанавливать защиту на лист необходимо ДО назначения книге общего доступа, т.к. после того, как книге будет назначен общий доступ изменять параметры защиты листов и книги запрещено. При этом запрещены как установка защиты так и её снятие.
Минус данного метода в том, что нет дружественного интерфейса снятия защиты. Например, при попытке изменить какие-то ячейки одного из назначенных диапазонов нет никакой информации о том, что это за диапазон(коммерческий или производственный). Что в свою очередь может запутать пользователя. Так же данным методом невозможно скрыть листы, либо отдельные строки и столбцы. Можно лишь запретить изменение ячеек.
Разграничение прав доступа при помощи VBA
Самый большой минус всех методов ниже:
они
не будут работать при отключенных макросах
(Что такое макрос и где его искать?). Во всех приложенных к статье файлах это предусмотрено и если макросы будут отключены, то пользователь увидит лист, предлагающий включить макросы. Подробнее см. в статье: Как запустить файл с включенными макросами?
Плюс подобного подхода
— мы практически не ограничены в правилах: можем скрывать от отдельных пользователей любые листы, строки и столбцы, защищать отдельные ячейки и т.п. Я ниже приведу несколько вариантов реализации защиты кодами, а вам останется лишь выбрать тот, который больше подходит под задачу. Первые три больше демонстрационные, чтобы показать что можно сделать. А вот последний пример — Практический пример с использованием администратора — наиболее приближен к задачам, применяемым в работе и наиболее удобен для распространения среди пользователей.
Проект VBA во всех файлах открыт для просмотра и изменений. Однако перед распространением решений в реальности лучше его закрыть от просмотра и изменений — Как защитить проект VBA паролем.
Важно: приведенные ниже решения могут работать некорректно в книгах с общим доступом. А те решения, в которых устанавливается защита на листы вообще не будут работать, т.к. для книг с общим доступом невозможно изменять параметры защиты листов и книг.
- Доступ пользователям только к определенным листам
Исходная задача: дать возможность пользователю видеть и работать только на определенных листах — тех, которые мы ему выделили. При этом он даже не подозревает, что есть другие листы. Как работает. Открываем файл — автоматом отображается лишь один лист «Main», доступный всем пользователям, жмем на кнопку, появляется форма:
В форме необходимо выбрать пользователя и указать пароль, соответствующий этому пользователю. Важно: Пароли и список доступных листов можно редактировать на очень скрытом листе «Users». Для каждого пользователя можно указать несколько листов. Указывать имена листов необходимо в точности такие же, какие они на самом деле. Это значит, что и регистр букв и каждый пробел должен быть учтен. Для разделения записей с несколькими листами используется точка-с-запятой(Лист1;Лист2;Лист3).
На листе «Main» перечислены имена пользователей, пароли для них и доступные для просмотра листы. Данная информация указаны только для ознакомления и тестов. Менять данные для реальных задач необходимо на листе «Users».Важно: файл может работать нестабильно в книгах с общим доступом.
Скачать пример
Tips_Macro_Sheets_for_Users.xls (84,5 KiB, 10 565 скачиваний)
- Доступ пользователю к определенным листам и возможность изменять только отдельные ячейки
Помимо того, что можно ограничить пользователю свободу выбора листов, ему можно еще и ограничить диапазоны ячеек, которые ему разрешено изменять. Иначе говоря, человек сможет работать только на Лист1 и Лист2 и вносить изменения только в указанные для каждого из листов ячейки. Файл с примером работает так же, как и пример выше: открываем книгу — видим только один лист «Main», жмем кнопку. Появляется форма, выбираем пользователя. Появятся только разрешенные листы и на этих листах можно изменять только те ячейки, который мы разрешим в настройках. При этом диапазоны для изменения можно указать для каждого листа разные. Важно: Пароли, список доступных листов и диапазонов можно редактировать на очень скрытом листе «Users». Для этого его необходимо отобразить, как описано в статье: Как сделать лист очень скрытым.
Чтобы разрешить изменять диапазоны на Лист1 — А1:А10 и А15:А20, а на Лист2 — В1:В10 и В15:В20, необходимо на листе «Users» указать листы: Лист1;Лист2 и диапазоны: A1:A10,A15:A20;B1:B10,B15:B20
На листе «Main» пароли и фамилии указаны только для ознакомления и тестов. Менять данные для реальных задач необходимо на листе «Users».
Пароль на листы указывается напрямую в коде. Для изменения пароля необходимо перейти в редактор VBA(Alt+F11), раскрыть папку Modules, выбрать там модуль sPublicVars и изменить значение 1234 в строке: Public Const sPWD As String = «1234»:
Важно: защита диапазонов достигается за счет установки защиты листа. Поэтому файл не будет работать в книгах с общим доступом.
Скачать пример
Tips_Macro_Sheets_Rng_for_Users.xls (86,0 KiB, 4 882 скачиваний)
- Доступ к определенным листам и скрытие указанных строк/столбцов
И еще чуть-чуть испортим жизнь пользователю: каждому пользователю видны только свои листы и виден только свой диапазон на этом листе. Точнее — строка или столбец. Все так же, как и в файлах выше(Пароли, список доступных листов и диапазонов можно редактировать на очень скрытом листе «Users». Для этого его необходимо отобразить, как описано в статье: Как сделать лист очень скрытым).
На листе «Users» доступны следующие настройки: в самом правом столбце необходимо указать скрывать столбцы(C) или строки(R) указанного диапазона.
Например, указаны диапазоны на Лист1 — А1:А10 и А15:А20, а на Лист2 — В1:В10 и В15:В20, а в правом столбце — R;C. Значит на Лист1 будут скрыты строки 1:10, 15:20, а на Лист2 столбец В. Почему так заумно? Потому что нельзя скрыть только отдельные ячейки — можно скрыть лишь столбцы или строки полностью.
На листе «Main» пароли и фамилии указаны только для ознакомления и тестов. Менять данные для реальных задач необходимо на листе «Users».
Пароль на листы указывается напрямую в коде. Для изменения пароля необходимо перейти в редактор VBA(Alt+F11), раскрыть папку Modules, выбрать там модуль sPublicVars и изменить значение 1234 в строке: Public Const sPWD As String = «1234»:
Важно: защита отображения скрытых строк и столбцов достигается за счет установки защиты листа. Поэтому файл не будет работать в книгах с общим доступом.
Скачать пример
Tips_Macro_Sheets_Hide_Rng_for_Users.xls (100,0 KiB, 4 537 скачиваний)
- Практический пример с использованием администратора
Все примеры выше имеют один маленький недостаток: при открытии файла виден один лист и надо жать на кнопку, чтобы выбрать пользователя. Это не всегда удобно. Плюс есть недостаток куда хуже: для изменения настроек всегда надо вручную отображать лист настроек, а может и другие листы. Поэтому ниже я приложил файл, форма в котором открывается сразу после открытия файла:
Если выбрать «Пользователь» — admin, указать «Пароль» — 1, то все листы файла будут отображены. Другим пользователям будут доступны только назначенные листы. Таким образом, пользователь, назначенный администратором сможет легко и удобно менять настройки и права доступа пользователей: добавлять и изменять пользователей, их пароли, листы для работы(они доступны на листе Users, как и в файлах выше). После внесения изменений надо просто закрыть файл — он сохраняется автоматически, скрывая все лишние листы.
При этом если пользователя нет в списке или пароли ему неизвестны, то при нажатии кнопки Отмена или закрытии формы крестиком файл так же закроется. Таким образом к файлу будет доступ только тем пользователям, которые перечислены в листе Users, что исключает доступ к файлу посторонних лиц.
Если макросы будут отключены, то пользователь увидит лишь один лист — с инструкцией о том, как включить макросы. Остальные листы будут недоступны.
В реальных условиях не лишним будет закрыть доступ к проекту VBA паролем: Как защитить проект VBA паролемВажно: файл может работать нестабильно в книгах с общим доступом.
Скачать пример
Tips_Macro_UsersRulesOnStart.xls (72,0 KiB, 6 294 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика