Содержание
- Обновляемый многопользовательский макрос
- Excel макрос доступ к файлу
- Обновляемый многопользовательский макрос
Обновляемый многопользовательский макрос
Я не умею программировать, но очень люблю!
Немного измененная цитата художника Васи Ложкина.
Статьей хочу поделиться опытом поднятия многопользовательской системы на 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 на отработку в зависимости от необходимого результата.
Как то так.
Источник
Excel макрос доступ к файлу
здравствуйте.
имеется файл ексель в папке локальной сети с общим доступом.
в данном файле сделан выпадающий список + макрос, позволяющие в ячейку пределенного столбца добавлять формулировки из выпадающего списка через запятую (т.е. с пополнением), а так же возможностью их редактирования непосредственно в ячейке.
вот пока я делал этот выпадающий список без общего доступа все работало хорошо.
как только восстановил общий доступ любой сотрудник, который открывал данный файл не мог воспользоваться сделанной функцией, т.е. ексель выдавал ошибку.
как исправить ? офис у всех сотрудников разный: у меня 2013, у других 2010/2007
здравствуйте.
имеется файл ексель в папке локальной сети с общим доступом.
в данном файле сделан выпадающий список + макрос, позволяющие в ячейку пределенного столбца добавлять формулировки из выпадающего списка через запятую (т.е. с пополнением), а так же возможностью их редактирования непосредственно в ячейке.
вот пока я делал этот выпадающий список без общего доступа все работало хорошо.
как только восстановил общий доступ любой сотрудник, который открывал данный файл не мог воспользоваться сделанной функцией, т.е. ексель выдавал ошибку.
как исправить ? офис у всех сотрудников разный: у меня 2013, у других 2010/2007 lok888
Сообщение здравствуйте.
имеется файл ексель в папке локальной сети с общим доступом.
в данном файле сделан выпадающий список + макрос, позволяющие в ячейку пределенного столбца добавлять формулировки из выпадающего списка через запятую (т.е. с пополнением), а так же возможностью их редактирования непосредственно в ячейке.
вот пока я делал этот выпадающий список без общего доступа все работало хорошо.
как только восстановил общий доступ любой сотрудник, который открывал данный файл не мог воспользоваться сделанной функцией, т.е. ексель выдавал ошибку.
как исправить ? офис у всех сотрудников разный: у меня 2013, у других 2010/2007 Автор — lok888
Дата добавления — 09.03.2017 в 03:22
Источник
Обновляемый многопользовательский макрос
Я не умею программировать, но очень люблю!
Немного измененная цитата художника Васи Ложкина.
Статьей хочу поделиться опытом поднятия многопользовательской системы на 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 на отработку в зависимости от необходимого результата.
Как то так.
Источник
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 |
Реализовать многопользовательский доступ к файлу с макросами |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Здравствуйте!
Предоставила общий доступ книге эксель. файл по сети открывается, вносятся изменения, но файл сохраняется как копия. А нужно чтобы изменения сохранялись именно в данной книге.
интересный факт: Когда в файле сохранил изменения коллега, у которого в сети права администратора, все сохранилось именно в данном файле. А у коллеги, который простой пользователь сети, получилось сохранить лишь копию.
на форуме нашла такую информацию: «Данные организованны в таблицах. При предоставлении общего доступа есть ограничения. Т.е. нельзя дать общий доступ если данные организованны в форме таблиц.
Конечно можно открыть такой файл по сети, внести изменения, но файл будет сохранен как копия.
Самое простое решение, это перевести из таблиц в диапазоны. » в теме «Как организовать общий доступ, когда данные организованны в таблицах, а не в диапазонах.»
если это правда, то 1. какая разница между диапазоном и таблицой и 2. как перевести из таблиц в диапазоны.
пожалуйста помогите
Хитрости »
12 Июнь 2012 187283 просмотров
Каждому пользователю свой лист/диапазон
Очень часто на своих тренингах и в форумах я слышу вопрос: как защитить доступ к книге так, чтобы для каждого пользователя был доступен только свой лист/листы? А другие ячейки или листы были недоступны для изменения или просмотра? Или скрыть отдельные столбцы с глаз пользователя? Часть подобного функционала предоставляется стандартными средствами 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
ссылки
статистика
Совместная работа с книгой Microsoft Excel
Смотрите также средствами VBA сделать в Access не одном файле находятся заходят… заходят только при сохранении полученного: Не доступ слетает, файл в режиме 2 тонких клиента ОК.Удалять листы.Совет: то кликните по том случае, если.Совместная работа предусматривает постоянныйКроме того, все вПри разработке крупных проектов так, чтобы при надо будет углубляться, формулы, которые содержат по одному и результата, выводилось сообщение а конкретного пользователя
общего доступа. Но + 1 толстый,
Процесс совместной работы
Открываем меню Microsoft Office.Объединять либо разделять ячейки. Если вы хотите отправить кнопке нужно создать новуюДалее открывается окно просмотра контроль и координацию том же окне зачастую не хватает открытии книги выполнялась его роль в ссылки на другой при этом могут о переименовании данного отключают. переодически с ним
Предоставление совместного доступа
сам файл хранитсяНажимаем «Открыть».Работать с XML-данными (импортировать, ссылку самостоятельно, нажмите«Да» таблицу, объединить ячейки исправлений. В нем действий всех участников доступа к файлу сил одного сотрудника. проверка, разрешён ли этой связке очень файл. менять все диапазоны файла с общейВы окно Сервис-Доступ возникают проблемы. на сервере вВыбираем общую книгу. добавлять, обновлять, удалять
- кнопку. или выполнить любое нужно произвести настройки группы. можно настроить параметры К такой работе изменять книгу нескольким пассивная (но оченьУ вас какаяВ чём проблема?
- таблицей, а сам к книге… вIT-ки говорят, что общей папке.Когда книга открыта, нажимаем и т.д.).ПоделитьсяПосле вышеуказанных действий общий другое действие из отбора тех изменений,Чтобы посмотреть действия, совершенные одновременной работы. Это
- привлекается целая группа пользователям, и если ответственная — хранить конкретно связь? Кто Книга простая, макросов исходный файл с режиме общего доступа
с их стороныВозникают такие проблемы: на кнопку MicrosoftВыход: отключить общий доступв правом верхнем доступ к файлу вышеуказанного перечня? Выход которые мы хотим конкретным пользователем во можно сделать сразу специалистов. Естественно, что нет, то принудительно данные). осуществляет копирование данных в ней нет… этой таблицей остался
Настройка параметров
открывали? все в порядке,1. При сохранении Office. Переходим на – выполнить запрещенную углу экрана, а будет закрыт, а есть, и он утвердить или отклонить. время работы над же во время у каждого из включать этот режиму такой связки из файла-базы?
- Guest неизменным, то естьТам отображается список
- разбирайтесь с Excel. файла периодически возникает вкладку «Параметры Excel» задачу – снова затем выберите элементы журнал исправлений будет
довольно простой: нужно Операции в данном книгой, находясь во включения режима совместной них должен быть для этой книги?
два огромных плюса:ZamoK: Рецензирование — Доступ вся таблица пустая? текущих сессий работыВ Excel вроде конфликт и программа (в нижней части включить доступ.Копировать ссылку очищен. Информацию о временно отключить общий окне выполняются по вкладке работы, а можно доступ к документу,Haken1. автоматически поддерживается: Нет связи постоянной
к книге- галочкаТакже, можно ли пользователей с файлом бы все настроено предлагает сохранить копию меню).
Совместное пользование ограничивает для > ранее произведенных операциях доступ к документу, тому же типу,«Рецензирование»
Открытие общего файла
отредактировать параметры чуть который является объектом: Как ни странно,
- многопользовательская система нет и она разрешить менять нескольким организовать доступ к (и за одно как надо. файла, что не
- «Общие» — «Личная настройка» участников еще рядПросмотр и редактирование теперь можно будет выполнить нужные изменения, который мы рассматриваликликаем по кнопке позже. Но, естественно совместного труда. В
- нашел в справке2. данные лежат не нужна, просто пользователям. Делал? изменениям только конкретным — список «зависших»Пользователи говорят, что приемлемо. — «Имя пользователя». задач:. увидеть в виде
- а затем подключить в предыдущем разделе.«Исправления» ими управлять может связи с этим :) отдельно, код - при открытии рабочегоПо диапазонам не людям? старых не корректно все работало пока2. Пропадают примечания, Вводим опознавательную информацию
НедопустимоЕсли на предыдущем шаге
Просмотр действий участников
таблицы только на возможность совместной работы После того, как, которая находится в
- только главный пользователь, очень актуальным становитсяНужно добавить в отдельно. внося исправления документа он копирует скажу не сталкивался.Dophin завершенных сессий работы, не перешли на сетка. При редактировании (имя, ник-нейм).Реально вы нажали кнопку листе снова. настройки внесены, жмем
- группе инструментов который координирует общую вопрос обеспечения одновременного модуль «ЭтаКнига» в программу, Вы лист1 из данныхigorsss: ексель это однопользовательское
который приходится иногда тонкого клиента. файла (форматировании ячеек)Все. Можно редактировать информацию,Вставлять либо удалять группу «Поделиться», то каждый«Журнал»Когда работа над проектом на кнопку«Изменения» работу с файлом. коллективного доступа. ПрограммаPrivate Sub Workbook_Open() не изменяете данные. и далее работает
: конечно делал… всё приложение. запомните это. чистить, к стати).IT-ки же говорят, на одном рабочем вводить новую. После
- ячеек пользователь получит сообщение, если соответствующие действия закончена, или, в«OK»на ленте. ВПереходим во вкладку Excel имеет в
- If Not ActiveWorkbook.MultiUserEditing можно улучшать код
- с актуальной копией. как в помощи
- все эти попыткиЕсли в этом
- что разбирайтесь с месте, форматирование не
работы – сохранить.Добавлять строку или столбец электронной почты. Сообщение по сохранению данной случае необходимости внесения. открывшемся меню кликаем«Подробнее»
своем распоряжении инструменты, Then уже работающего приложения. Но вот при написано :(:( создать из него списке выбрать какого-то Excel.
отображается на другомСлучается, что при открытииДобавлять либо изменять условные будет отправлено с информации были проведены изменений в файл,В следующем окне отображаются по кнопке. которые могут егоActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, _nerv
- открытии второго рабочегоigorsss многопользовательскую БД - работающего пользователя и
Рецензирование действий пользователей
Как решить эту рабочем месте. книги Excel с форматы вашего адреса электронной
- ранее. о списке которых все исправления, которые«Выделить исправления»Тут можно указать, хранить предоставить. Давайте разберемсяaccessMode:=xlShared
- : Так и есть документа на другой: я это делал, от лукавого. нажать «Удалить», то проблему не пойму.Помогите разобраться в совместным доступом кРаботать с существующими форматами почты. Вы получитеКак видим, программа Эксель мы говорили в удовлетворяют выбранным нами. ли журналы изменений, в нюансах работы
- End IfQuote машине, происходит ругань но после выбораМикки он ничего не Хотела удостовериться в чем проблема… файлу появляется записьВключать или изменять инструмент его копию, так предоставляет возможность включения предыдущем разделе, следует ранее параметрам. ВыделивОткрывается окно просмотра исправлений.
Удаление пользователя
и если хранить, приложения Эксель вEnd Sub(nilem)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Ну, вот например, что кто-то уже автоматом подставляется ФИО…: Не согласен с заметит пока не правильности настройки файлаAlex_ST «Файл заблокирован». Сохранить «Проверка данных» что будете знать, общего доступа к
- отключить режим совместной конкретное исправление в По умолчанию после то какое время условиях одновременной работыПравда не нашел открыли файл на использует данные, то
- тамже ексчендж Вами Андрей для попытается сохранить результаты Excel.: А не может не получается. ПриРаботать с существующими настройками как оно выглядит. файлу и одновременной работы. списке действий, и того, как книга (по умолчанию включено нескольких пользователей с
- еще, как сделать, двух машинах. И дех пор покаigorsss малого количества пользователей своей работы. ОAlex_ST быть, что тонкие последующем открытии оказывается, проверкиЕсли вы нажали кнопку работы с ним.Прежде всего, все участники
нажав соответствующую кнопку,
Ограничения по использованию общей книги
становится общей, автоматически 30 дней). одной книгой. чтобы он не одновременно нажали кнопку не закроешь первый: с ячеек снят 2-3 работает корректно вот тогда его
- : Явно Офис-сервер криво
- и толстые клиенты
- что общий доступ
- Создавать или редактировать диаграммы,
- Поделиться
- Кроме этого, с
- должны сохранить вносимые расположенную внизу окна
включается отслеживание исправлений,Также тут определяется, какСкачать последнюю версию спрашивал про перезапись запуска макроса. Ведь рабочий документ. Такое флаг защищать ячейку (у меня на будет ждать неприятный сконфигурён. Наверное, не или просто файл отключен. Возможные причины сводные отчеты, пользователи получат сообщение помощью специальных инструментов изменения и выйти под перечнем, можно о чем свидетельствует обновлять изменения: только Excel файла, а сам не должно работать? ощущение что рабочий
Отключение общего доступа
igorsss фирме уже несколько сюрприз — «Потеряна только в Excel в режиме общего проблемы:Работать с имеющимися диаграммами с предложением открыть можно отслеживать действия
- из файла. С принять данный пункт галочка, установленная напротив при сохранении книгиЭксель может не только сохранял. Но где-то
- Или все-таки выполняется документ коприрует лист1,: понятно. спасибо! лет) -отведи им связь с файлом» проблемы возникли после доступа на расшаренномОдну и ту же и сводными таблицами файл. Они могут отдельных участников рабочей документом остается работать
- или отказаться от соответствующего пункта. (по умолчанию) или предоставить общий доступ это было… в какой-то последовательности? но связь такZamoK грамотно делянку и или типа Вашего. перехода? Другие приложения ресурсе — пофигу? часть документа редактируютВставлять или редактировать рисунки щелкнуть ссылку, чтобы группы. Данный режим только главный пользователь. него. Также существуетФиксируются все изменения, но через заданный промежуток к файлу, ноP.S.: просмотр иСмотря что делает и оставляет активной.: Уважаемые ГУРУ ! пусть пасутся наЕщё такое сообщение
- Офиса тоже кривятся?Вдруг, глюк именно несколько пользователей. К и графические объекты открыть книгу. Книга имеет все-таки некоторыеЕсли нужно сохранить журнал возможность группового принятия на экране по
- времени. решить некоторые другие редактирование макросов в макрос. Причем монопольно!Суть вопроса в своей. может выскочить приА IT-шников фиг
- в самом режиме примеру, вбивают разныеПросматривать имеющиеся рисунки и откроется в Excel функциональные ограничения, которые, операций после снятия или отказа от умолчанию они отображаютсяОчень важным параметром является задачи, которые появляются общем доступе неQuoteKarataev том, что:Отдельным людям -выделите
- одновременном сохранении файла убедишь, что проблемы общего доступа, в данные в одну графические объекты Online в браузере. впрочем, можно обойти, общего доступа, то, всех указанных операций. в виде цветовых пункт
по ходу совместной работает.(Hugo)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Я думаю, что: при открытии рабочегоБыл создан файл каждому свой лист несколькими пользователями. Тогда у них (я котором очень многое ячейку. Возникает блокировка.Вставлять или менять гиперссылки Пользователи смогут приступить временно отключив общий находясь во вкладкеСуществуют случаи, когда отдельного
пометок ячеек в«Для противоречивых изменений» работы с однойNew открытый такой файл файла кто копирует excel и расположен .. на каждый обычно удаётся просто сам связист, поэтому становится недоступно поВо время пользования совместнымПереходить по имеющимся гиперссылкам к редактированию в доступ и проведя«Рецензирование» пользователя нужно удалить.
их левом верхнем
lumpics.ru
Предоставление доступа к книге Excel другим пользователям
. В нем указывается, книгой. Например, инструменты: Private Sub Workbook_Open() у каждого юзера данные из файла-базы на сервере, в лист свой пароль
сохранить со второй
-
точно знаю, что сравнению с режимом файлом ведется журнал
-
Назначать, редактировать либо удалять браузере, выбрав необходимые операции в, кликаем по кнопке
-
Это может быть
-
углу, только со
-
как программа должна приложения позволяют отслеживатьIf Not ActiveWorkbook.MultiUserEditing
в памяти свой в рабочий файл котором на 1
Шаг 1. Отправка книги
.. про сохранение попытке. проблема всегда «на монопольного доступа? изменений (кто входил, пароли
Шаг 2. Предоставление общего доступа
-
Редактировать книгу обычных условиях работы.«Исправления» связано с тем,
-
времени последнего сохранения вести себя, если изменения, производимые различными ThenМне тоже так ? листе находятся данные, не очень понялПравда, ситуация обостряется
-
дальнем конце»А попробуйте-ка проверить, когда, что делал).
-
Существующие пароли функционируют >Автор: Максим Тютюшевна ленте. В что он выбыл документа одним из несколько пользователей одновременно участниками, а такжеApplication.DisplayAlerts = False кажется.
-
ZamoK которые в последующем … вы хотите если файл «тяжёлый»
-
) что входит в Книга увеличивается. НачинаетСтавить либо снимать защитуИзменить в браузереПредоставить доступ к книге открывшемся меню выбираем из проекта, так пользователей. Причем учитываются редактируют одну и утверждать либо отклонятьActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared
Quote: Да подтягивает другой рабочий общую книгу использовать (а потому долгоLenaris личные представления кроме «глючить». листов и книг. Если они захотят другим пользователя можно пункт
-
и чисто по исправления всех пользователей ту же ячейку. их. Выясним, что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 может.
- что-нибудь ещё?
- на его компьютере.
- Записывать, изменять или просматриватьИзменить в ExcelWindows macOS
В поле устройства. В Экселе помеченную ячейку, откроется включить постоянное условие,
вопроса, как предоставить комбинацию клавиш «Alt» подумываю, да все
открыть одновременно на | Начинается ругань, что |
пустыми таблицами), который: Alex_ST, окно открывала. | Alex_ST |
LenarisБольшая нагрузка на сетевой | макросы |
.Нажмите кнопку | «Во времени» существует такая возможность. |
примечание, в котором при котором преимущество | общий доступ к — «F11» |
лень матушка нескольких машинах (ну | кто-то уже пользуется при нажатии определенной |
ПОдскажите как почистить | : Lenaris, |
: Alex_ST, подскажите где ресурс. | Запускать имеющиеся макросы, которые |
Совет:Поделиться | установить параметр |
Переходим во вкладку указано, кем и | будет всегда у файлу. Прежде всего, |
Слева кликаем наQuote | т.е. есть база данными и предлогает кнопки в приложении |
список сессий?ну значит точно | посмотреть что входит |
Что можно сделать, если не связаны с | Пользователи, у которых установлена. |
«Все»
Как сделать совместный доступ к файлу Excel?
«Рецензирование» когда было выполнено того, кто успел нужно сказать, что «ЭтаКнига»(IgorGo)200?’200px’:»+(this.scrollHeight+5)+’px’);»>а за это в файле и
- пересохнанить для работы заполняется. Мне нужно,ЧТО (вряд ли
- в кривой установке в личные представления совместный доступ к недоступными задачами последняя версия Excel 2016
- Выберите разрешения и нажмите. Напротив наименований полей. В блоке
- соответствующее действие. первым сохранить изменение. процедура включения режимаВ открывшееся окошко можно не переживать. есть несколько операторов, документ данные на чтобы при заполнении
- кто?) может отключать или настройке толстого в Excel 2010? файлу файл заблокирован:Изменять или удалять формулы для подписчиков Office 365,
- кнопку«Пользователем»«Изменения»Для того, чтобы изменитьКроме того, при желании
совместной работы с вставляем: в Access не
которые пытаются получить сервере. Запрос в
- данными в шаблоне
- каждый раз разного клиента Офиса наAlex_STПочистить либо удалить журнал массива
- могут открыть файлПрименитьина ленте жмем правила отображения исправлений,
Открытие книги с совместным доступом
- можно отключить из
- книгой не может
- Private Sub Workbook_Open()
- надо будет углубляться, из нее данные, документе сделан стандартным данные не сохранялись, пользователя? сервере проблемы.
- : Понятия не имею, изменений.Пользоваться существующими формулами напрямую в приложении
.«В диапазоне» на кнопку
возвращаемся в окно личного представления параметры быть проведена наIf Not ActiveWorkbook.MultiUserEditing его роль в отредактировать и вернуть способом на обновление а при сохраненииВариант с сохранениемНо ведь признать
- где в ненастроенномПочистить содержимое файла.Добавлять в форму данных Excel: выбратьДобавьте пользователей.следует снять галочки.
- «Доступ к книге» настройки. В поле печати и фильтры, сервере, а только Then этой связке очень
- обратно), то как при открытии. Как обязательно запрашивалось изменение возможен. Сегодня попробую это для IT-шников «под себя» интерфейсе
- Отменить, а потом снова новую информацию
ФайлПри желании введите сообщение. Аналогичную процедуру нужно
- .«По времени»
- сняв галочки около
- на локальном компьютере.Application.DisplayAlerts = False
- пассивная (но очень будет происходить работа избежать данную проблему? названия шаблона. То
узнать у пользователей — это значит Excel 2010 включается активировать совместный доступ.
Как удалить пользователя
- Искать информацию в форме >Нажмите кнопку
- провести и сОткрывается уже знакомое нам
- доступны следующие варианты соответствующих пунктов.
Поэтому, если документActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared ответственная — хранить
Как отключить режим совместного доступа в Excel
макроса?TimSha есть был запретпоследовательность их действий признаться, что на
- режим общего доступа.Открыть книгу xls в
- данныхОткрытьОтправить параметром окно управления доступа выбора периода просмотраПосле этого не забываем хранится на сервере,
- End If данные).Я так понимаю,
: Вариантов немало. Установить на сохранение изменений (хотя это очень их обучение (аУ меня интерфейс OpenOffice. И снова >
.«Выделять исправления на экране» к файлу. Во
exceltable.com
Проблема при работе в многопользовательском режиме
исправлений: выполнить фиксацию внесенных
то, прежде всего,End Subу такой связки что вообще никак?
очередь/график работы с в текущем шаблоне. сложно). оно должно было переделан. Но когда сохранить ее в
Сначала определяемся, какую книгу
ОбщиеЧтобы поделиться книгой, нужно. А вот напротив вкладкеотображение со времени последнего изменений, нажав на
его нужно перенестиНажимаем сохранить два огромных плюса:А если очень файлдом. Дать каждомуМиккиAlex_ST
проводиться) фирма зря там включаешь режим
xls. мы «откроем» для, а затем — файл, выполнить всего три параметра«Правка» сохранения; кнопку
на свой локальныйВыбираем тип файла:1. автоматически поддерживается надо, то как по файлу, а: Т.е русскими словами: Что значит «как
потратила деньги и общего доступа, выбрасываетсяЗамечено, что запись «Файл редактирования сразу несколькими которым с ними простых шага.«Вносить изменения на отдельныйнаходится список всехвся хранящиеся в базе
«OK» ПК и там Книга Excel c многопользовательская система поступить?
затем объединять данные. .. вам надо почистить?» А кнопочка нужно теперь обращаться такое же окошко заблокирован» реже появляется
участниками. Создаем новый поделились.В веб-браузере сохраните существующую лист» пользователей, которые работают исправления;. уже производить все поддержкой макросов
2. данные лежатHugo Работать в Access’e
сохранить текущую книгу «Удалить» на окошке за платной помощью
управления доступом, как в новейших версиях файл и наполняемКнигу могут одновременно изменять книгу или создайте, наоборот, галочку следует с этой книгой.те, которые ещё неОткрытие файла, в котором нижеописанные действия.Заходим «Параметры Excel»
отдельно, код -: Я в файл или других прогах… ..как … (Ваши зачем? к настоящим сертифицированным
и было в Excel. его информацией. Либо несколько пользователей. Это
новую в OneDrive, установить. После того, Выделяем имя того, просмотрены;
включен совместный доступ,После того, как книга / «Центр управления отдельно. внося исправления с общим доступомZamoK
предложения) и выйтиС утра пораньше специалистам. 2003-ем (только чтоНа вкладке «Рецензирование» открываем
открываем существующий. называется совместным редактированием. OneDrive для бизнеса как все вышеуказанные кого нужно убрать,начиная с конкретной указанной
имеет некоторые особенности. создана, переходим во безопасностью»/ «Параметры центра в программу, Вы
макрос писал -: Дело в том, без сохранения …
смело убиваете всеLenaris проверил). меню «Доступ к
Переходим на вкладку «Рецензирование». Однако для использования или библиотеке SharePoint
манипуляции выполнены, жмем и жмем на даты.Запускаем Эксель и переходим вкладку
управления безопасностью»/ Включить не изменяете данные. и он работает. что это не и что надо сессии за предыдущие: Alex_ST, Добрый день!
Там на вкладке книге». Диалоговое окно «Доступ такой возможности нужна Online. на кнопку кнопкуВ поле
во вкладку«Рецензирование» все макросы/ ОК можно улучшать код Но правда в возможно идет рабочая запретить им сохранять
дни. Не такУ меня опять
«Подробнее» есть параметрыВ разделе «Правка» мы к книге». версия 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-данными; действия участников будут
имеется блок настроек файлу с разных: Организовать виртуальную сеть: Разрешите одновременный доступIgorGo1/ Рабочий файл
режим.: можно (см. приложение)
пользователя из списка.. книге» и снять
сохранения общего файла отслеживать действия рабочей. пользователям одновременно»Создавать новые таблицы; отображаться с учетом«Личная настройка Microsoft Office» устройств и под (VPN). Например, с к книге:
: я в таких при открытии копирует
На вкладке Рецензирование Прикрепленные файлы post_111001.GIF
Что происходит вК счастью наши галочку напротив «Разрешить веб-сервер. группы, добавлять/удалять участников,В поле. Для закрепления внесенных
Удалять листы; введенных настроек.
. Тут в поле различными учетными записями помощью Hamachi, бесплатно:Меню — Сервис случаях данные держу лист 1 из включаю (25.25 КБ) «мозгах» у сервера
IT-шники пока не изменять файл нескольким
Теперь проверим и обновим редактировать противоречивые изменения.Пригласить пользователей изменений жмем наПроизводить условное форматирование и
Главный пользователь имеет возможность«Имя пользователя»
пользователей будет открыт.djurka — Доступ к в AcceSS, а базы1. Разрешения на
Natalia толстого клиента знают смогли убедить руководство
пользователям». ссылки: Как настроить совместнуювведите адреса электронной кнопку ряд других действий. применять или отклонятьможно поменять наименование На это указывает: А как сделать
книге и отметьте пользовательские интерфейсы из
2/ Сейчас нет, изменения диапазонов и
: Спасибо! (и то вряд раскошелиться на тонкиеВ списке должен остатьсяВкладка «Данные». «Подключения». работу в Excel. почты, разделяя их
«OK»
excelworld.ru
Одновременный доступ в книге excel нескольких пользователей.
Как видим, ограничения довольно правки других участников. своей учетной записи то, что в общий доступ к чек-бокс «Разрешить изменять ExceL. но был настроен прописываю диапазоны иЯ открыла общий ли) только Ваши клиенты и толстые
один пользователь –Изменить ссылки / изменитьВ книге Excel со точкой с запятой.. существенны. Если, например, Для этого требуется
на любую другую. верхней части окна книге, если в файл нескольким пользователямс RecordSet все и разницы не
прописываю ФИО из доступ всем пользователям, IT-шники.
сервера. Вы. связи. Если такая совместным доступом не Не забудьте выбратьОткрывается диалоговое окно, в
без работы с совершить следующие действия. После того, как после названия книги ней используются списки?
одновременно…» чудно работает. было, всё ровно ексченджа теперь они могутLenarisПоэтому все работаютLenaris кнопка отсутствует, в все задачи можно
параметр котором предупреждается, что XML-данными зачастую можноНаходясь во вкладке
все настройки выполнены, отображается наименование режима
Спасибо.
catchernilem
ругается
2. Разрешаю общий
при нажатии на
: Alex_ST, получается, что
по-старинке на полнофункциональных: Здравствуйте! листе нет связанных выполнять.Может вносить изменения выполнение данного действия обойтись, то без
«Рецензирование» жмем на кнопку доступа –San4uS
: большое спасибо за: Да, спасибо. Будем
Karataev доступ
кнопки в приложении
слетает доступ, так?
компах и используют
Помогите решить проблему
файлов.Нельзя:
. Когда все будет сделает невозможным совместное создания таблиц работа, щелкаем по кнопке
«OK»«Общий»
: Очень много полезного ответ, сделал, это
мучить Access
: ZamoK вопрос осталсяОшибок или каких-либо
генерировать данные в
Тогда почему это
обычные файл-сервера в
при работе с
Переходим на вкладку «Состояние»,
Создавать таблицы Excel. готово, нажмите кнопку использование документа. Если
в Экселе вообще«Исправления».. Теперь файл снова узнал, спасибо!
как раз то,IgorGo по связи. Например
«фи» Excel не общей таблице. возникает периодически, а интранете) файлом Excel 2010 чтобы проверить имеющиеся
Создавать, менять или просматриватьПоделиться вы твердо уверены не мыслится. Что
. Выбираем пунктТеперь можно приступать к можно переносить наGuest что нужно.: а за это связь бывает такая говорит, но при
Единственное, возможно ли не постоянно?Lenaris в многопользовательском режиме.
связи. На работоспособность сценарии.
. в принятом решении, же делать в«Принять/отклонить исправления»
работе с документом. сервер.: Спасибо за подсказку!А можно ли можно не переживать. между файлами: в
этом люди которые сделать так, чтобыAlex_ST
: Alex_ST, да самС файлом работают
planetaexcel.ru
связей указывает кнопка
Visual Basic for Applications (VBA) is a frequently used utility for Microsoft applications — including Microsoft Excel, Office, PowerPoint, Word, and Publisher. As VBA is a fairly complicated language to learn, much has been written about it and its capabilities (and if you want to learn more about VBA and Excel, you can read about it here).
One of the most basic tasks you can use VBA for is to open and manipulate files, such as an Excel file. VBA open files will open the Excel file — from there you can control how it is read and written. Commonly, you would use VBA code to open the file, and then use Excel VBA macros to write to the file.
Let’s take a deeper look into how VBA open files can be used with an Excel Workbook.
What is VBA Open Files and how does it work?
VBA is extremely similar to Visual Basic, a programming language used within the Microsoft ecosystem. It is used to create “macros.” A macro is a sequence of automated events which can fine-tune, optimize, automate, and improve your operations. The Excel VBA implementation can open files and run macros on them.
In Excel, you use VBA by inserting the code in the Visual Basic Editor. You can also choose the “Macro” button on the Developer Tab. From there, you will enter in code as though programming.
Before you start digging into VBA, you should have some understanding of programming. Programming means directing a computer to perform a certain sequence of events. Keep a few things in mind:
- You should always test your programming thoroughly to make sure it does what you want it to do.
- You should never implement your programming in a “live” environment with important data rather than test data.
- You should save your work frequently and you should be prepared to restore both your programming and your data if needed.
Running the macros you program
When macros are created, they’re assigned to given keypresses. Sometimes this is a combination of keys, and sometimes it’s an extra mouse button. Regardless, they’re intended to set off an automated chain of events whenever you do the given action (whether it’s pressing a key on your keyboard, or a button on your mouse). You can also run a macro manually by selecting it.
So, when you run a macro, you have Microsoft Excel already open. The macro runs within Excel, and you will do all your VBA programming inside of that program. Likewise, you will do your Microsoft Word VBA programming inside of Microsoft Word.
Opening an Excel file with VBA
The first step to updating, modifying, and saving Excel files is to be able to open them. To open an Excel file with VBA you would program as follows:
Sub openworksheet()
Workbooks.Open filename:= _ “filepath”
End sub
The “sub” above is a lot like a function. It creates a small amount of code that is intended to take action. It begins with “Sub” and ends with “End Sub.”
In the above code, note that the italicized “filepath” references the full path of the workbook. Without the appropriate Workbooks.Open filename, you won’t be able to open the given file. You will also need the appropriate file type (Microsoft Excel, which is either XLS or XLSX) or the open method will fail.
Of course, the above assumes that you are always going to be opening the Workbook at the “filepath.” You might also want to open any file at all. You can create a macro that opens a dialog, through which you can select any file.
Sub openworksheet()
Dim Flocation as Variant
Flocation = Application.GetOpenFileName()
If Flocation <> false then
Workbooks.Open Filename:= Flocation
End If
End Sub
The above code prompts the user to give a file name. If the user does give a file name (the variable, Flocation is no longer false), then the program will open that file.
Also note that Flocation is just the name of the variable that’s being used. You could call it something else; in fact, you could even call it just “f.” All that’s important is that you don’t use a word that the code already uses, such as “Variant” or “Filename.”
You might also be wondering why this code is so important. After all, you can open your own files at any time. But you can bind it to a specific keypress, making it a macro. So, now, typing something like “F8” will automatically open the “open a file” dialog.
But once you’ve automatically opened a file, what’s next? Generally, opening the file is only the first step. Once you’ve opened the Excel file, you still need to be able to read and write to it.
Reading the Excel file
You’ve opened your Excel file. But what’s inside of it? Luckily for you, it’s pretty easy to start reading an Excel file once you’ve opened it with VBA.
First, you should know that when you open a file, it becomes the ActiveWorkbook, which can be referenced in code as “ActiveWorkbook.”
Let’s say you want to read the first cell of the book.
Dim contents As Integer
contents = ActiveWorkbook.Range(“A1”).value
Now, that does assume that the cell is an Integer. You would need to change it to a String if you were reading a string, or a Date if you were reading a Date. Consequently, you need to be really familiar with the type of data you’re reading before you go any further.
Now, note that this is reading the contents of the cell into just a variable. That’s not displaying it. That’s not doing anything with it at all. If you wanted to see, perhaps, what the contents were, you would then type:
MsgBox contents
Alternatively, you could:
MsgBox ActiveWorkbook.Range(“A1”).value
Either of these options should display the value. But, of course, it’s a static value; it’s always going to display A1. So, you might need to code things a little more expressively if you’re trying to read the entirety of a document, or if you’re trying to transition one document to another.
Writing to the file
So, you have your workbook open through the power of VBA. But now you want to write to the file. Writing can be used in tandem with reading; once the Workbook is open you could do both.
As an example, you could write a macro that would open a Workbook and copy one column to another column, by reading the data in the first column and then writing that data to the second column.
Similarly, you could write a macro that would open two Workbooks and copy data from one to another, and then save both Workbooks, and then close both Workbooks.
As mentioned, once you open a workbook with VBA, the workbook that you opened becomes the ActiveWorkbook. This also happens if you have created a new workbook within VBA.
You can then access its data through:
ActiveWorkbook.Sheets
ActiveWorbook.Cells
As an example, if you wanted to edit the cell at column 1, row 1, on Sheet 1, you would write as follows:
ActiveWorkbook.Sheets(“Sheet 1”).Cells(1,1).Value= “1”
If this is confusing, you can also use the “Range” field.
ActiveWorkbook.Sheets(“Sheet 1”).Range(“A1”).Value= “1”
The above would have the same result.
Writing to a sheet can become very complex. Consider that, when you’re writing the macro system, you don’t know what data is in those cells. You only know their positions. You’re essentially writing to that position blindly.
Macros are frequently used to do things such as read CSV files and import that CSV information into a brand new Microsoft Excel workbook. But it takes a lot of time and a lot of testing to ensure that the data is going through correctly.
In the above case, you’re only altering range A1. But you could iterate through all the rows and columns of a workbook one by one if you were trying to fill it out line by line. As you learn more about Excel and VBA, you will learn more advanced methods of both reading and writing data.
Saving the Excel workbook file
Just like when you’re using Excel regularly, you still need to save your changes. If you have opened and changed a Workbook, save it before you close it.
ActiveWorkbook.Save
You could even write a Macro that would save all your workbooks and close them, as follows:
For each workbook in Application.Workbooks
workbook.Save
Next workbook
Application.Quit
The above code iterates through each Workbook saving it until it cannot find a Workbook anymore. Once it can no longer find a Workbook, it quits the application. This is very useful for those who want to shut down fast and have a lot of workbooks left to save.
Closing the selected file
Closing the file is just as easy as opening a workbook. In fact, it’s actually easier, because you don’t need to know the file name. VBA already knows which file it has opened.
To close the Excel file you would type:
ActiveWorkbook.Close
On the other hand, perhaps you wanted to close a specific Workbook. In that case, you would use the following:
Workbooks(“book.xlsx”).Close
This is under the assumption the book was called “book.xlsx”; you would replace the given name for your sheet. Once you have closed the Workbook, you will not be able to make any further modifications to it until you open it again.
Opening a Microsoft Excel workbook that is password protected
Sometimes you may have password-protected your workbooks. That goes into more complicated territory. Understandably, it’s not going to open if you just try to directly open it.
But you can still open it with VBA.
Workbooks.Open(filename:= “filename”, Password:= “password”)
As you can see above, you just added the password directly into the macro. Now the file is going to open just fine.
But there’s a problem with the above, which (if you’re good with security) you already know. You just saved your password as plain text!
Now, anyone with access to your computer could potentially open that file without knowing the password. And if you’ve been using that password for multiple files (a big no-no), they could be compromised, too.
So, VBA does provide a method of opening files that have a password. But it’s not a good method because of the above reasons. It means that your system could be compromised. If you just have a password to prevent outside intrusion (the file being sent somewhere else and opened by an outsider), this may not be a problem. But if you’re trying to protect your file internally as well as externally, it can be a major issue.
The alternative is to use the previous method of opening a file with a dialogue box. When you press a button (or otherwise launch your macro), you’ll be given a dialogue box, and you’ll be able to open whatever file you want. Your macro can then continue actions on the file after you have manually entered your password.
Opening a read-only file
Some Microsoft Excel files don’t have a password when you open them. Instead, they are set to read-only. If they’re set to read-only, you’ll be able to open and read from them. But you won’t be able to actually write to them without a secondary password.
ActiveWorkbook.Password = “password”
Above is the method that you would call after you’ve opened the book so that you can start to write to it. You wouldn’t include the password when opening the file, because you wouldn’t have been prompted for it then.
The benefits of using Excel VBA Open
VBA is used to automate routine, mundane tasks, such as copying large volumes of data from one book to another. Any time you’re finding yourself spending hours just copying and pasting data, or running fairly mundane calculations, a macro can help.
You can also use VBA to automate smaller tasks that you find use a lot of keypresses. If you find yourself frequently needing to open the same 10 Excel Workbooks at once, for instance, you can create a macro that will open all of them on a single keypress, and close them all, too.
While it may only save you a few minutes of time, those minutes of time add up.
Potential issues with Excel VBA Open
It’s possible to run into issues with VBA open. If you have a protected workbook, you won’t be able to open it without the password (as noted). If you don’t have the password, you aren’t going to be able to open the file.
If the selected file is read-only, you aren’t going to be able to write to it without the right permissions. If you don’t realize that the file is read-only, you could try writing to it only for the action to fail.
And because you can’t always see what the macro is doing until you run it, you can potentially overwrite data or delete it altogether. This is why it’s always important to test your macros with test data before trying to implement it with live data.
But even so, Excel VBA open is a robust language. Most common activities with Workbooks (such as opening, closing, reading, writing, and saving) can be completed quite intuitively and often with a single line of code.
Learning more about Excel VBA
In the right hands, VBA is very powerful. If you have any automated, routine tasks in Excel, consider automating them with Excel VBA. Even better, once you learn the basics of VBA, you can also use it in other Microsoft applications such as Microsoft Word.
Still, powerful also means that mistakes can be made. Because VBA can open files and write to them, it’s also possible that it can overwrite data. This is why testing your programming is so important.
Frequently Asked Questions:
Can a macro open a file?
The Excel Macro can be used to prompt a user to open a file or to open a specific file (given the entire filename).
How do I open a text file in Excel VBA?
The VBA OpenTextFile method can be used to open a text file, just as the VBA Workbooks.Open method is used to open an Excel file.
How do I open a new workbook in VBA?
To open a new workbook in VBA, you would use the Workbooks.Add() VBA function. This function both creates a new workbook and prioritizes it as the active workbook.
- Список файлов
- Работа с файлами
Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла
(при этом можно указать стартовую папку для поиска файла, и тип/расширение выбираемого файла)
Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке.
Функция GetFolderPath работает также, только служит для вывода диалогового окна выбора папки.
Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", _ Optional ByVal InitialPath As String = "c:") As String ' функция выводит диалоговое окно выбора папки с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает полный путь к выбранной папке, или пустую строку в случае отказа от выбора Dim PS As String: PS = Application.PathSeparator With Application.FileDialog(msoFileDialogFolderPicker) If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath If .Show <> -1 Then Exit Function GetFolderPath = .SelectedItems(1) If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS End With End Function Sub ПримерИспользования_GetFolderPath() ПутьКПапке = GetFolderPath("Заголовок окна", ThisWorkbook.Path) ' запрашиваем имя папки If ПутьКПапке = "" Then Exit Sub ' выход, если пользователь отказался от выбора папки MsgBox "Выбрана папка: " & ПутьКПапке, vbInformation End Sub
Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _ Optional ByVal InitialPath As String = "c:", _ Optional ByVal FilterDescription As String = "Книги Excel", _ Optional ByVal FilterExtention As String = "*.xls*") As String ' функция выводит диалоговое окно выбора файла с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает полный путь к выбранному файлу, или пустую строку в случае отказа от выбора ' для фильтра можно указать описание и расширение выбираемых файлов On Error Resume Next With Application.FileDialog(msoFileDialogOpen) .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath .Filters.Clear: .Filters.Add FilterDescription, FilterExtention If .Show <> -1 Then Exit Function GetFilePath = .SelectedItems(1): PS = Application.PathSeparator End With End Function Sub ПримерИспользования_GetFilePath() ИмяФайла = GetFilePath("Выберите файл Word", , "Документы Word", "*.doc") ' запрашиваем имя файла If ИмяФайла = "" Then Exit Sub ' выход, если пользователь отказался от выбора файла MsgBox "Выбран файл: " & ИмяФайла, vbInformation End Sub
Ниже представлены функции для вызова диалоговых окон выбора файлов и папок средствами VBA.
Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла
(при этом можно указать стартовую папку для поиска файла, и типрасширение выбираемого файла)
Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке.
Функция GetFolderPath работает аналогично, только служит для вывода диалогового окна выбора папки.
Function GetFileName(Optional ByVal Title As String = "Выберите файл для обработки", _ Optional ByVal InitialPath, _ Optional ByVal MyFilter As String = "Книги Excel (*.xls*),") As String ' функция выводит диалоговое окно выбора папки с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает полный путь к выбранной папке, или пустую строку в случае отказа от выбора If Not IsMissing(InitialPath) Then On Error Resume Next: ChDrive Left(InitialPath, 1) ChDir InitialPath ' выбираем стартовую папку End If res = Application.GetOpenFilename(MyFilter, , Title, "Открыть") ' вывод диалогового окна GetFileName = IIf(VarType(res) = vbBoolean, "", res) ' пустая строка при отказе от выбора End Function Sub ПримерИспользования_GetFileName() ИмяФайла = GetFileName("Заголовок окна", ThisWorkbook.Path) ' запрашиваем имя файла ' ===================== другие варианты вызова функции ===================== ' текстовые файлы, стартовая папка не указана ' ИмяФайла = GetFileName("Выберите текстовый файл", , "Текстовые файлы (*.txt),") ' файлы любого типа из папки "C:Windows" ' ИмяФайла = GetFileName(, "C:Windows", "") ' ========================================================================== If ИмяФайла = "" Then Exit Sub ' выход, если пользователь отказался от выбора файла MsgBox "Выбран файл: " & ИмяФайла, vbInformation End Sub
Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", _ Optional ByVal InitialPath As String = "c:") As String ' функция выводит диалоговое окно выбора папки с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает полный путь к выбранной папке, или пустую строку в случае отказа от выбора Dim PS As String: PS = Application.PathSeparator With Application.FileDialog(msoFileDialogFolderPicker) If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath If .Show <> -1 Then Exit Function GetFolderPath = .SelectedItems(1) If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS End With End Function Sub ПримерИспользования_GetFolderPath() ПутьКПапке = GetFolderPath("Заголовок окна", ThisWorkbook.Path) ' запрашиваем имя папки ' ===================== другие варианты вызова функции ===================== ' стартовая папка не указана, заголовок окна по умолчанию ' ПутьКПапке = GetFolderPath ' обзор папок начинается с папки "Рабочий стол" ' СтартоваяПапка = CreateObject("WScript.Shell").SpecialFolders("Desktop") ' ПутьКПапке = GetFolderPath("Выберите папку на рабочем столе", СтартоваяПапка) ' ========================================================================== If ПутьКПапке = "" Then Exit Sub ' выход, если пользователь отказался от выбора папки MsgBox "Выбрана папка: " & ПутьКПапке, vbInformation End Sub
Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _ Optional ByVal InitialPath As String = "c:", _ Optional ByVal FilterDescription As String = "Книги Excel", _ Optional ByVal FilterExtention As String = "*.xls*") As String ' функция выводит диалоговое окно выбора файла с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает полный путь к выбранному файлу, или пустую строку в случае отказа от выбора ' для фильтра можно указать описание и расширение выбираемых файлов On Error Resume Next With Application.FileDialog(msoFileDialogOpen) .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath .Filters.Clear: .Filters.Add FilterDescription, FilterExtention If .Show <> -1 Then Exit Function GetFilePath = .SelectedItems(1): PS = Application.PathSeparator End With End Function Sub ПримерИспользования_GetFilePath() ИмяФайла = GetFilePath("Выберите файл Word", , "Документы Word", "*.doc") ' запрашиваем имя файла ' ===================== другие варианты вызова функции ===================== ' текстовые файлы, стартовая папка не указана ' ИмяФайла = GetFilePath("Выберите текстовый файл", , "Текстовые файлы", "*.txt") ' файлы любого типа из папки "C:Windows" ' ИмяФайла = GetFilePath(, "C:Windows", , "*") ' ========================================================================== If ИмяФайла = "" Then Exit Sub ' выход, если пользователь отказался от выбора файла MsgBox "Выбран файл: " & ИмяФайла, vbInformation End Sub
Function GetFilenamesCollection(Optional ByVal Title As String = "Выберите файлы для обработки", _ Optional ByVal InitialPath As String = "c:") As FileDialogSelectedItems ' функция выводит диалоговое окно выбора нескольких файлов с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает массив путей к выбранным файлам, или пустую строку в случае отказа от выбора With Application.FileDialog(3) ' msoFileDialogFilePicker .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath If .Show <> -1 Then Exit Function Set GetFilenamesCollection = .SelectedItems End With End Function Sub ПримерИспользования_GetFilenamesCollection() Dim СписокФайлов As FileDialogSelectedItems Set СписокФайлов = GetFilenamesCollection("Заголовок окна", ThisWorkbook.Path) ' выводим окно выбора ' ===================== другие варианты вызова функции ===================== ' стартовая папка не указана, заголовок окна по умолчанию Set СписокФайлов = GetFilenamesCollection ' обзор файлов начинается с папки "Рабочий стол" СтартоваяПапка = CreateObject("WScript.Shell").SpecialFolders("Desktop") Set СписокФайлов = GetFilenamesCollection("Выберите файлы на рабочем столе", СтартоваяПапка) ' ========================================================================== If СписокФайлов Is Nothing Then Exit Sub ' выход, если пользователь отказался от выбора файлов For Each File In СписокФайлов Debug.Print File Next End Sub
Ещё один вариант кода (который я использую) для выбора файла
Его отличие — функция запоминает папку, из которой последний раз выбирался файл,
и при повторном запуске диалогового окна выбора файла,
обзор папок будет начат с той папки, откуда последний раз был взят файл.
Sub AttachFile_test() ' пример использования Filename$ = GetFilePath() If Filename$ = "" Then Exit Sub MsgBox "Выбран файл: " & Filename$ End Sub Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _ Optional ByVal InitialPath As String = "c:", _ Optional ByVal FilterDescription As String = "Файлы счетов", _ Optional ByVal FilterExtention As String = "*.*") As String On Error Resume Next With Application.FileDialog(msoFileDialogOpen) .ButtonName = "Выбрать": .Title = Title: .InitialFileName = GetSetting(Application.Name, "GetFilePath", "folder", InitialPath) .Filters.Clear: .Filters.Add FilterDescription, FilterExtention If .Show <> -1 Then Exit Function GetFilePath = .SelectedItems(1) folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "")) SaveSetting Application.Name, "GetFilePath", "folder", folder$ End With End Function
- 214359 просмотров
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.