Excel с макросом с общим доступом

 

yuas

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

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

Уважаемые эксперты,

Есть файл с макросами и защитой листов.
Планируется, что в файле будут работать до 10-ти человек.

При изменении файла в режим «Общий доступ» файл пишет, что в файле есть макросы и они не будут работать.

Вопросы:
1. Можно ли сделать так, чтобы в режиме общего доступа все макросы работали исправно и защита листов также работала корректно?
2. Если да, то как?

Изменено: vikttur05.09.2021 18:24:52

 

Дмитрий(The_Prist) Щербаков

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

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

Профессиональная разработка приложений для MS Office

#2

05.09.2021 18:31:18

Цитата
yuas написал:
При изменении файла в режим «Общий доступ»

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

Цитата
yuas написал:
в режиме общего доступа все макросы работали исправно и защита листов также работала корректно?

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

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

yuas

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

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

В моем файле Макросы некоторые в файле снимают и возвращают защиту листов.
Когда я жму во вкладке «Рецензирование», доступ к книге и там жму галку «Разрешить изменять файл нескольким пользователям, то файл начинает ругаться и говорить что это невозможно.
версия Excel — 2016.
Как мне быть? мне очень нужно чтобы в файле работали одновременно несколько человек?

 

Дмитрий(The_Prist) Щербаков

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

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

Профессиональная разработка приложений для MS Office

#4

06.09.2021 20:14:49

Цитата
yuas написал:
Как мне быть?

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

Цитата
yuas написал:
начинает ругаться и говорить что это невозможно

Угадывать на что именно ругается не хочется, поэтому лучше приложите скрин. Возможно, у Вас в файле есть умные таблицы и Excel пишет про XML и все в этом духе. Такая тема была прямо вот на днях, не должна была убежать далее 2-ой страницы.

Возможно, Вам поможет что-то из этой статьи:

Каждому пользователю свой лист/диапазон

Там в самом начале рекомендации по разграничению диапазонов — возможно, это решит часть Ваших проблем.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

yuas

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

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

когда пытаюсь сделать общий доступ, появляется окошко с надписью «В книге содержатся макросы, написанные на Visual Basic. Изменить или просмотреть макросы в файлах совместного доступа невозможно»
помогите пожалуйста можно это решить как то?

 

Дмитрий(The_Prist) Щербаков

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

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

Профессиональная разработка приложений для MS Office

#6

07.09.2021 15:58:57

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

Цитата
Дмитрий(The_Prist) Щербаков написал:
Потому что начиная с 2016 по умолчанию общий доступ к книгам назначается путем помещения копии файла в облачное хранилище и доступ к нему организовывается при помощи офиса он-лайн, в котором макросы просто не реализованы

как Вы решите проблему того, что макросы в версии он-лайн не реализованы? :)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#7

07.09.2021 16:04:37

Цитата
Дмитрий(The_Prist) Щербаков написал: как Вы решите проблему того, что макросы в версии он-лайн не реализованы?

Прошу прощения, что вставляю свои 5ть копеек. Думаю, что, возможно, подойдёт переход на гугл таблицы и замена макросов VBA на google apps scripts, с учётом всех нюансов и ограничений.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Дмитрий(The_Prist) Щербаков

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

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

Профессиональная разработка приложений для MS Office

#8

07.09.2021 16:27:36

Цитата
JayBhagavan написал:
с учётом всех нюансов и ограничений

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

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

RAN

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

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

#9

07.09.2021 16:38:50

Цитата
Дмитрий(The_Prist) Щербаков написал:
Потому что начиная с 2016 по умолчанию общий доступ к книгам назначается

Дим, а старый общий доступ остался?

 

RAN, да. Надо зайти в настройку Панели Быстрого Доступа -выбрать Все команды и найти там «Общий доступ к книге(старые версии)». Вынести на панель или на другую вкладку.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

yuas

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

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

 

New

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

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

yuas, кто вам мешает проверить это самому и рассказать нам?

Изменено: New07.09.2021 19:21:29

 

Когда тогда? yuas, Вы уж извините, но то ли Вы вообще не читаете ответы, то ли я Вас совсем не понимаю. Задавайте более конкретные вопросы, что ли. Я же все расписал еще в первом сообщении.
Если делать общим через облако — макросы забудьте, они там не реализованы.
Если делать общий доступ старыми средствами(которые у Вас, видимо, и используются) — то макросы по изменению параметров защиты не будут работать в этом файле, т.к. изменять параметры защиты для общих файлов запрещено. При этом данное ограничение совершенно не зависит от того, изменяется ли защита макросами или вручную. Да, появится сообщение, о котором Вы писали. Но это сообщение никак не мешает работе макросов — оно лишь говорит о том, что Вы не сможете зайти в проект VBA, т.к. он будет в скрытом режиме(Project is Unviewable)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

RAN

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

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

#14

07.09.2021 19:56:12

Цитата
yuas написал:
И тогда будет работать ?

Будет.
Но макросы, связанные с защитой, вылетят в ошибку.

Содержание

  • 1 Как сохранить макрос в личную книгу макросов
    • 1.1 Как создать Личную Книгу Макросов
    • 1.2 Как использовать Личную Книгу Макросов
    • 1.3 Где хранится Личная Книга Макросов
    • 1.4 P.S.
    • 1.5 Ссылки по теме

Большинство пользователей Excel знают, как создать и использовать макрос внутри файла одной рабочей книги. В случаи, когда необходимо использовать тот же макрос в других файлах рабочих книг, тогда можно сохранить его в личной книге макросов. У нее всегда одно название – Personal.xlsb. Она всегда открывается при запуске программы Excel, только скрыто. Данная книга не является доступной по умолчанию в Excel, поэтому ее нужно сначала подключить.

Как сохранить макрос в личную книгу макросов

Чтобы создать и схоронить код в личной книге макросов:

  1. Выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Запись макроса».
  2. В появившемся диалоговом окне «Запись макроса», из выпадающего списка «Сохранить в:» выберите опцию «Личная книга макросов». И нажмите на кнопку OK.
  3. Теперь выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Остановить запись».
  4. Откройте редактор Visual Basic: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11. В окне «Project-VBAProject», в дереве проектов появиться доступная еще одна книга Personal.xlsb. Кликните на «плюсик» слева на против этой книги, чтобы раскрыть проект книги Personal.xlsb. А после двойным щелчком отройте ее Module1.
  5. В результате откроется окно кода модуля с зарегистрированным макросом. Удалите его код и введите код своего макроса. Выберите инструмент в редакторе макросов: «File»-«Save Personal.xlsb», а потом закройте редактор Visual Basic.

Теперь у вас подключена скрытая книга для хранения макросов, к которым можно получить доступ из любой другой рабочей книги. Личная книга макросов где находится находиться в папке автозагрузки файлов Excel – XLSTART: C:Documents and SettingsUser_NameAppDataRoamingMicrosoftExcelXLSTARTPersonal.xlsb

Примечание. XLSTART – это папка для автозагрузки файлов вместе с запуском программы Excel. Если сохранить файл в данную папку, то он будет открываться вместе с программой Excel. Для версий старше 2007 путь к папке автозагрузки будет следующим: C:Program FilesMicrosoft OfficeOffice12Xlstart.

Если вам нужно записать в нее новый макрос просто откройте редактор, а потом откройте модуль книги Personal.xlsb. Уже записанные в нее макросы удалять не нужно. Они не будут между собой конфликтовать если соблюдать одно простое правило – в одном модуле нельзя хранить макросы с одинаковыми именами.

Если вы еще не знакомы с макросами в Excel, то я вам даже немного завидую. Ощущение всемогущества и осознание того, что ваш Microsoft Excel можно прокачивать почти до бесконечности, которые придут к вам после знакомства с макросами — приятные чувства.

Однако, эта статья для тех, кто уже «познал мощь» и начал использовать макросы (чужие или написанные самостоятельно — не важно) в своей повседневной работе.

Макрос — это код (несколько строк) на языке Visual Basic, которые заставляют Excel сделать то, что вам нужно: обработать данные, сформировать отчет, скопипастить много однообразных таблиц и т.п. Вопрос — где эти несколько строк кода хранить? Ведь от того, где макрос хранится будет потом зависеть где он сможет (или не сможет) работать.

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

А если макрос должен быть относительно универсален и нужен в любой книге Excel — как, например, макрос для конвертирования формул в значения? Не копировать же его код на Visual Basic каждый раз в каждую книгу? Кроме того, рано или поздно, почти любой пользователь приходит к мысли, что неплохо было бы сложить все макросы в одну коробку, т.е. иметь их всегда под рукой. И может быть даже запускать не вручную, а сочетаниями клавиш? И вот тут может здорово помочь Личная Книга Макросов (Personal Macro Workbook).

Как создать Личную Книгу Макросов

На самом деле, Личная Книга Макросов (ЛКМ) — это обычный файл Excel в формате двоичной книги (Personal.xlsb), который автоматически в скрытом режиме открывается одновременно с Microsoft Excel. Т.е. когда вы просто запускаете Excel или открываете любой файл с диска, на самом деле открываются два файла — ваш и Personal.xlsb, но второго мы не видим. Таким образом все макросы, которые хранятся в ЛКМ оказываются доступы для запуска в любой момент, пока открыт Excel.

Если вы еще ни разу не пользовались ЛКМ, то изначально файл Personal.xlsb не существует. Самый легкий способ его создать — это записать рекордером какой-нибудь ненужный бессмысленный макрос, но указать в качестве места для его хранения Личную Книгу — тогда Excel будет вынужден автоматически ее для вас создать. Для этого:

  1. Откройте вкладку Разработчик (Developer). Если вкладки Разработчик не видно, то ее можно включить в настройках через Файл — Параметры — Настройка ленты (Home — Options — Customize the Ribbon).
  2. На вкладке Разработчик нажмите кнопку Запись макроса (Record Macro). В открывшемся окне выберите Личную книгу макросов (Personal Macro Workbook) как место для хранения записанного кода и нажмите OK:

    как сделать общий макрос excel для всей системы

  3. Остановите запись кнопкой Остановить запись (Stop Recording) на вкладке Разработчик (Developer)

Проверить результат можно, нажав на кнопку Visual Basic там же на вкладке Разработчик — в открывшемся окне редактора в левом верхнем углу на панели Project — VBA Project должен появиться наш файл PERSONAL.XLSB. Его ветку которого можно развернуть плюсиком слева, добравшись до Module1, где и хранится код только что записанного нами бессмысленного макроса:

как сделать общий макрос excel для всей системы

Поздравляю, вы только что создали себе Личную Книгу Макросов! Только не забудьте нажать на кнопку сохранения с дискеткой в левом верхнем углу на панели инструментов.

Как использовать Личную Книгу Макросов

Дальше все просто. Любой нужный вам макрос (т.е. кусок кода, начинающийся на Sub и заканчивающийся End Sub) можно смело копировать и вставлять либо в Module1, либо в отдельный модуль, добавив его предварительно через меню Insert — Module. Хранить все макросы в одном модуле или раскладывать по разным — исключительно вопрос вкуса. Выглядеть это должно примерно так:

как сделать общий макрос excel для всей системы

Запустить добавленный макрос можно в диалоговом окне, вызываемом с помощью кнопки Макросы (Macros) на вкладке Разработчик:

как сделать общий макрос excel для всей системы

В этом же окне, нажав кнопку Параметры (Options), можно задать сочетание клавиш для быстрого запуска макроса с клавиатуры. Будьте внимательны: сочетания клавиш для макросов различают раскладку (русская или английская) и регистр.

Кроме обычных макросов-процедур в Личной Книге можно хранить и пользовательские макро-функции (UDF = User Defined Function). В отличие от процедур, код функций начинаются с оператора Function или Public Function, а заканчиваются на End Function:

как сделать общий макрос excel для всей системы

Код необходимо аналогичным образом скопировать в любой модуль книги PERSONAL.XLSB и затем можно будет вызвать функцию обычным образом, как любую стандарную функцию Excel, нажав кнопку fx в строке формул и выбрав функцию в окне Мастера Функций в категории Определенные пользователем (User Defined):

как сделать общий макрос excel для всей системы

Примеры таких функций можно в больших количествах найти в интернете или здесь же на сайте (сумма прописью, приблизительный текстовый поиск, ВПР 2.0, конвертация кириллицы в транслит и т.п.)

Где хранится Личная Книга Макросов

Если вы будете использовать Личную Книгу Макросов, то рано или поздно у вас возникнет желание:

  • поделиться своими накопленными макросами с другими пользователями
  • скопировать и перенести Личную Книгу на другой компьютер
  • сделать ее резервную копию

Для этого нужно будет найти файл PERSONAL.XLSB на диске вашего компьютера. По умолчанию, этот файл хранится в специальной папке автозапуска Excel, которая называется XLSTART. Так что все, что нужно — это добраться до этой папки на нашем ПК. И вот тут возникает небольшая сложность, потому что местоположение этой папки зависит от версии Windows и Office и может различаться. Обычно это один из следующих вариантов:

  • C:Program FilesMicrosoft OfficeOffice12XLSTART
  • C:Documents and SettingsComputerApplication DataMicrosoftExcelXLSTART
  • C:Usersимя-вашей-учетной-записиAppDataRoamingMicrosoftExcelXLSTART

Как вариант, можно спросить о положении этой папки сам Excel с помощью VBA. Для этого в редакторе Visual Basic (кнопка Visual Basic на вкладке Разработчик) нужно открыть окно Immediate сочетанием клавиш Ctrl+G, ввести туда команду ? Application.StartupPath и нажать на Enter:

как сделать общий макрос excel для всей системы

Полученный путь можно скопировать и вставить в верхнюю строку окна Проводника в Windows и нажать Enter — и мы увидим папку с нашим файлом Личной Книги Макросов:

как сделать общий макрос excel для всей системы

P.S.

И несколько практических нюансов вдогон:

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

Ссылки по теме

  • Что такое макросы, как их использовать в работе
  • Полезности для VBA-программиста
  • Тренинг «Программирование макросов на VBA в Microsoft Excel»

Скрипты Office можно предоставлять другим пользователям в вашей организации. Когда вы предоставляете общий доступ к скрипту, вы присоединяете его к книге, позволяя другим пользователям просматривать и запускать его.   

Важно: Любой, кто может редактировать книгу, может просматривать и запускать вложенные скрипты.

Предоставление общего доступа к сценарию в книге

Чтобы поделиться сценарием в книге, можно использовать страницу со сведениями о сценарии. Скрипты хранятся в OneDrive. При совместном использовании вы создаете ссылку на него в открытой книге.

  1. На вкладке Автоматизация выберите скрипт, к которому вы хотите предоставить общий доступ, из коллекции или списка Все скрипты . Обратите внимание, что вы можете предоставлять доступ только к собственным сценариям. У вас может быть доступ к другим скриптам, к которым вы предоставили общий доступ, или к встроенным примерам скриптов, которым невозможно предоставить общий доступ.

    Коллекция сценариев Office

    Откроется редактор кода, в котором отобразится выбранный скрипт.

  2. В меню Дополнительные параметры редактора кода (…) выберите Поделиться.

    замещающий текст

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

    Коллекция сценариев Office с общим скриптом

Примечания: 

  • Общие сценарии могут запускаться любым пользователем, обладающим разрешением на запись в книге. Все изменения, внесенные сценарием, записываются как правки пользователя, запустившего сценарий, а не его владельца.

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

  • Сценарий Office можно использовать только в организации. Скрипты не могут предоставляться внешним пользователям.  

  • Вы также можете предоставить общий доступ к скрипту, создав кнопку. Дополнительные сведения см. в статье Создание кнопки для запуска сценария Office.

Отмена общего доступа к сценарию

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

  1. Выберите скрипт в коллекции сценариев.

  2. В меню Дополнительные параметры редактора кода (…) выберите Остановить общий доступ.

  3. Если вы являетесь владельцем сценария, в диалоговом окне Прекратить общий доступ в этой книге можно выбрать Остановить общий доступ во всех книгах. Убедитесь, что вы хотите прекратить общий доступ, так как его невозможно отменить. Чтобы повторно предоставить общий доступ к скрипту, вам придется вручную повторно поделиться им в каждой книге. Когда все будет готово, выберите Остановить общий доступ.

    Диалоговое окно "Прекратить общий доступ в книге"

Примечание: Чтобы предоставить общий доступ к скрипту определенному пользователю, а не в книге, перейдите в папку Документы > OneDrive > папку Скрипты Office и поделитесь файлом скрипта.

Разрешить выполнение общего скрипта

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

Диалоговое окно "Разрешение на запуск" для сценария Office в Excel

Примечание: При первом запуске скрипта также открывается диалоговое окно Запуск разрешения каждый раз, когда скрипт обновляется другим коллегой в вашей организации.

См. также

Общие сведения о сценариях Office в Excel

Параметры сценариев Office в Microsoft 365

Создание кнопки для запуска сценария Office

Нужна дополнительная помощь?

129 / 67 / 31

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

Сообщений: 787

1

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

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


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

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



0



370 / 268 / 93

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

Сообщений: 990

14.08.2019, 15:01

3

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

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

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

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



0



129 / 67 / 31

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

Сообщений: 787

14.08.2019, 15:08

 [ТС]

4

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

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



0



370 / 268 / 93

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

Сообщений: 990

14.08.2019, 15:10

5

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

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

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

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

+ sql

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



0



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

Serge_007

Дата: Понедельник, 10.04.2023, 14:58 |
Сообщение № 1

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

Всем привет

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

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

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

К сообщению приложен файл:

3176338.png
(23.4 Kb)


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Gustav

Дата: Понедельник, 10.04.2023, 16:13 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

985

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

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

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


МОИ: Ник, Tip box: 41001663842605

 

Ответить

Serge_007

Дата: Понедельник, 10.04.2023, 16:29 |
Сообщение № 3

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

«кучу кода» в модуль класса завернуть?

Что это даст?
Ведь проблема в одномоментном обращении к «Главному файлу»…

Вот пример кода из файла пользователя:[vba]

Код

‘id111 (элемент: button, атрибут: onAction), 2010+
Private Sub onAction_id111(control As IRibbonControl)
        Application.ScreenUpdating = False
        Workbooks.Open ThisWorkbook.Path & «MAIN_Macro.xls»
        Application.Run «‘MAIN_Macro.xls’!Module1.Macro1»: Workbooks(«MAIN_Macro.xls»).Close False
        Application.ScreenUpdating = True
End Sub

[/vba]

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


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Gustav

Дата: Понедельник, 10.04.2023, 17:43 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

985

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

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

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


МОИ: Ник, Tip box: 41001663842605

 

Ответить

Serge_007

Дата: Понедельник, 10.04.2023, 17:52 |
Сообщение № 5

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

создать из главного файла надстройку или подключать его как-то как библиотеку через Tools References?

Как надстройку? Скорее нет
То же касается и подключений
Пользователи не должны трогать «Главный» файл, да и не умеют они этого…
Но опять-таки — что даст преобразование его в надстройку?
При одномоментном «подключении» нескольких пользователей опять-таки будет конфликт доступа

Нужно именно так по-простому

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

Общий доступ к нему, конечно же, включен?

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

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


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

RAN

Дата: Понедельник, 10.04.2023, 19:29 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

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

К сообщению приложен файл:

6934497.jpg
(13.5 Kb)


Быть или не быть, вот в чем загвоздка!

 

Ответить

Nic70y

Дата: Вторник, 11.04.2023, 07:40 |
Сообщение № 7

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

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

Сохрани файл как надстройку

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

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


ЮMoney 41001841029809

 

Ответить

Serge_007

Дата: Вторник, 11.04.2023, 11:12 |
Сообщение № 8

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

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

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

Сохрани файл как надстройку, и подключи к рабочим файлам через Referens

Подключать надо КАЖДЫЙ файл пользователя вручную?


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Nic70y

Дата: Вторник, 11.04.2023, 12:21 |
Сообщение № 9

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

Смысл в том, что в будущем возможны изменения, которые потребуют корректировки макросов

именно с такой (наверное) ситуацией я и столкнулся.
файлы пользователей (у нас) это в принципе отчет, калькулятор и т.п. — данные в него юзер не вносит.
файл пользователя, при открытии сравнивает свою версию с моим файлом
и если они не совпадают, открывает файл «Обновление» вставляет свои Path и Name, закрывается,
в файле «Обновление» одна кнопка — Обновить
без вариантов, макрос Открывает мой файл и сохраняет его как Path и Name.
все — у юзера новый файл, но это конечно, когда — данные в него юзер не вносит


ЮMoney 41001841029809

 

Ответить

Serge_007

Дата: Вторник, 11.04.2023, 12:35 |
Сообщение № 10

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

данные в него юзер не вносит

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


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Nic70y

Дата: Вторник, 11.04.2023, 12:50 |
Сообщение № 11

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

пользователи со своими файлами работают

вот жеж… гады не хорошие


ЮMoney 41001841029809

 

Ответить

RAN

Дата: Вторник, 11.04.2023, 15:31 |
Сообщение № 12

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Да, каждый.


Быть или не быть, вот в чем загвоздка!

 

Ответить

VBAdevelope

Дата: Вторник, 11.04.2023, 15:51 |
Сообщение № 13

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


2013

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


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871

 

Ответить

Gustav

Дата: Вторник, 11.04.2023, 15:53 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 2398


Репутация:

985

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

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

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


МОИ: Ник, Tip box: 41001663842605

 

Ответить

Serge_007

Дата: Вторник, 11.04.2023, 16:34 |
Сообщение № 15

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

Жесть
Вроде работает, но файлов почти полтысячи…


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Serge_007

Дата: Вторник, 11.04.2023, 16:37 |
Сообщение № 16

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

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

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


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Serge_007

Дата: Вторник, 11.04.2023, 16:38 |
Сообщение № 17

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

попробовал Общий доступ-то?

Пока нет, пробовал вариант Андрея с надстройкой


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

RAN

Дата: Вторник, 11.04.2023, 18:20 |
Сообщение № 18

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

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


Быть или не быть, вот в чем загвоздка!

 

Ответить

Serge_007

Дата: Вторник, 11.04.2023, 22:56 |
Сообщение № 19

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

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


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Serge_007

Дата: Среда, 12.04.2023, 11:46 |
Сообщение № 20

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

Если файлов 500, а пользователей 10

Пользователей много, но подключать надо не пользователей. а файлы, т.е. важно кол-во файлов

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

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


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Like this post? Please share to your friends:
  • Excel родительный падеж в именительный
  • Excel с макросами для ios
  • Excel робота с таблицами
  • Excel рисунок под ячейки
  • Excel рисунок под текстом