Excel vba общий доступ к книге

 

Abakumov

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

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

#1

13.01.2014 16:32:40

Уважаемые форумчане, пытаюсь прописать код для снятия и восстановления общего доступа к книге программно.Коды нашел

Код
'снять общий доступа
ActiveWorkbook.ExclusiveAccess 
'расшарить книгу
ActiveWorkbook.SaveAs AccessMode:=xlShared

Вот только при их выполнении у меня возникают диалоговые окна касательно того «Данная операция приведет к сохрананию книги» и «Общий доступ не даст возможности просматривать макросы». Можно ли сделать что бы по умолчания я был на все согласен?

Когда испробованы все варианты, я начинаю плясать с бубном. Как правило — помогает.

 

Dima S

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

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

#2

13.01.2014 16:57:43

Код
Aplication.DisplayAlerts = false

Не забудьте после выполнения кода их включить обратно.

 

Abakumov

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

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

Dima S, спасибо огромное, помогли. Все работает как надо

Когда испробованы все варианты, я начинаю плясать с бубном. Как правило — помогает.

 

The_Prist

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

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

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

Не забудьте вернуть параметр обратно.
Более подробно расписывал в этой статье:

Как запретить сообщения?

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

 

slesarok

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

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

#5

08.04.2022 06:58:10

А тогда подскажите:
Я в User_Form сделал Флаг на быстрое переключение Общего доступа

Код
'Действие при установки/снятии флажка "Включить общий доступ к книге"
Private Sub ExclusiveAccess_CheckBox_Click()
Application.DisplayAlerts = False
    If ActiveWorkbook.MultiUserEditing Then
        ActiveWorkbook.ExclusiveAccess = True
    Else
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs AccessMode:=xlShared
        Application.DisplayAlerts = True
    End If
End Sub

И суть проблемы в том, что при выполнении

Код
ActiveWorkbook.SaveAs AccessMode:=xlShared

происходит сохранение файла в директорию по умолчанию (к примеру: C:UserDocuments) а не в тоже место, откуда был изначально открыт файл. Хоть с локального диска открытие файла, хоть с сетевого расположения.

Помогите решить вопрос!

 

slesarok

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

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

#6

08.04.2022 07:07:27

Разобрался)

Код
'Действие при установки/снятии флажка "Включить общий доступ к книге"
Private Sub ExclusiveAccess_CheckBox_Click()
    Dim MyPath$, MyName$    MyPath = ThisWorkbook.Path
    MyName = ThisWorkbook.Name
Application.DisplayAlerts = False
    If ActiveWorkbook.MultiUserEditing Then
        ActiveWorkbook.ExclusiveAccess = True
    Else
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs MyPath & "" & MyName, AccessMode:=xlShared
        Application.DisplayAlerts = True
    End If
End Sub
 

slesarok

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

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

#7

08.04.2022 09:28:19

Все же макрос работает на совсем корректно. Без профессиональной помощи не разберусь

На странице кнопка вызова определенного Меню

Код
Private Sub Admin_Menu_Click()
Admin_Menu_Initialize
Load Window_Menu
Window_Menu.Show vbModeless
End Sub

В меню только 1 Флаг «Общий доступ у книге»
При инициализации меню «Admin_Menu_Initialize» я проверяю в каком состоянии сейчас «Доступ книге», чтобы Флаг корректно отображался
1 — при Общем доступе
0 — при отсутствии

Код
Private Sub Admin_Menu_Initialize()
If ActiveWorkbook.MultiUserEditing = True Then
Window_Menu.ExclusiveAccess_CheckBox.Value = True
Else
Window_Menu.ExclusiveAccess_CheckBox.Value = False
End If
End Sub

При манипуляциях с Флагом (включить/выключить), код работает корректно (общий доступ работает, сохраняет в нужную директорию! !Но при условии, если прописано On Error Resume Next

‘Действие при установки/снятии флажка «Включить общий доступ к книге»

Код
Private Sub ExclusiveAccess_CheckBox_Click()
Dim MyPath$, MyName$
MyPath = ThisWorkbook.Path
MyName = ThisWorkbook.Name
On Error Resume Next
If ExclusiveAccess_CheckBox.Value = False Then
Application.DisplayAlerts = False
ActiveWorkbook.ExclusiveAccess
Application.DisplayAlerts = True
Else
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs MyPath & "" & MyName, AccessMode:=xlShared
Application.DisplayAlerts = True
End If
End Sub

Иначе ругается Method ‘ExclusiveAccess’ of Object ‘_Workbook’ failed

Конечно все работает с On Error Resume Next, но хочется понимать, можно ли иначе, так сказать по правильному

Изменено: slesarok08.04.2022 09:31:58

 

slesarok

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

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

#8

08.04.2022 09:34:41

Не могу найти правила загрузки файлов. Не грузятся
Какой формат нужен?

https://disk.yandex.ru/i/S8GrI_tdp7_r9g

Изменено: slesarok08.04.2022 09:37:38

Добрый день всем :)

Преамбула:

Конференция в целях интереса писал(а):А вы точно искали ответ, не нашли его и задаете осмысленный и не противоречащий Правилам Конференции (которые Вы конечно же, скрупулезно изучили), вопрос?

Ответ я искал, НЕ нашел, вопрос постараюсь сформулировать максимально осмысленно. С правилами вроде бы конфликтов нет :oops:

Собственно сабж: в некоей организации для работы используется здоровенная (10 Мб) книга Excel, буквально пронизанная различными макросами и защитой ячеек/листов/самой книги. Недавно появилась задача — необходимо заставить эту самую книгу работать в режиме общего доступа, что сразу повлекло за собой ряд проблем. Оказалось, что дедушка Ёксель режим общего доступа не очень любит, и при попытке в оном применить команду Workbooks(«ИмяКниги»).Unprotect вываливается с сообщением:

Дедушка Ёксель писал(а):Runtime error 1004. Method «Unprotect» of object «_Worksheet» failed/

.

Пытаясь найти какие-либо свойства/методы, связанные с режимом общего доступа, наткнулся только на два метода: ProtectShared и UnprotectShared. Т.е. функций, которые возвращают режим работы книги (общий или монопольный) то ли нет, то ли я их проморгал (искренне надеюсь на второе).

Ну и вопросы:

1. Есть ли возможность снимать программно защиту с листов в режиме общего доступа к книге?

2. Если ее нет, можно ли определять режим работы книги помимо обработки события «On Error…» в теле макросов синхронизации?

Как обычно — заранее спасибо :)

С уважением,

Злыдень.

Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

«Защитить книгу и дать общий доступ» VBA.

Michael_S

Дата: Четверг, 17.11.2016, 09:41 |
Сообщение № 1

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

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

Сообщений: 2012


Репутация:

373

±

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


Excel2016

Всем привет!
У меня проблема: макросом нужно защитить книгу и дать общий доступ — кнопка на рисунке.
Макрорекодер не пишет. Счас могу отдельно защитить книгу и дать общий доступ без защиты; но мне нужно, что б общий доступ можно было снять только с паролем.
Может кто помочь?
Буду благодарен.

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

2139986.png
(13.5 Kb)

Сообщение отредактировал Michael_SЧетверг, 17.11.2016, 09:41

 

Ответить

SLAVICK

Дата: Четверг, 17.11.2016, 10:30 |
Сообщение № 2

Группа: Модераторы

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

Сообщений: 2290


Репутация:

766

±

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


2019


у меня записал такое:
[vba]

Код

ActiveWorkbook.ProtectSharing Filename:=»D:tempКнига17.xlsx», Password:=»1111″, writeRespassword:=»2222″

[/vba] -оно?


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Michael_S

Дата: Четверг, 17.11.2016, 12:34 |
Сообщение № 3

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

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

Сообщений: 2012


Репутация:

373

±

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


Excel2016

Чуть позже попробую, счас негде.
Все равно спасибо!

 

Ответить

Ответить

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток!
Господа такой вопрос. Как программно дать общий доступ к книге Excel?
Заранее благодарен.

Код к задаче: «Как программно дать общий доступ к книге Excel?»

textual

Листинг программы

If ActiveWorkbook.MultiUserEditing Then
    ActiveWorkbook.ExclusiveAccess
End If

Полезно ли:

6   голосов , оценка 3.667 из 5

Похожие ответы

  1. Как программно нажать на кнопку в браузере черезе VBA
  2. Как сделать лист другой книги — скрытым
  3. VBA Excel Как программно запретить вывод автофигуры на печать?
  4. Как программно включить/отключить NumLock
  5. Какое свойство задать RowSourse чтобы при открытии формы список сразу был открыт
  6. Как в VBA задать строку S из 10 символов?
  7. Какой оператор надо применять при вводе исходных данных?
  8. Каким методом можно записать строку в документ ворд ?
  9. Ввод дат только текущего года через userform
  10. Как вывести сообщение если необходимый файл не найден
  11. Как узнать название лейбла элемента коллекции по номеру

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки


    1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
    2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость — сестра таланта.
    3. Не забывайте использовать теги [сode=vba] …текст программы… [/code] для выделения текста программы подсветкой!
    4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.

    >
    Многопользовательский доступ в Excel и VBA

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    12.01.09, 19:33

      Member

      **

      Рейтинг (т): нет

      Не знаю куда еще написать, VBA здесь может и ни при чем:-)

      Есть файл в excel, в котором есть макросы (в частности в макросах снимается/защищается лист). Когда я через Сервис->Доступ к книге включаю «Разрешить совместный доступ», то вылезает сообщение что-то типа «Нельзя будет изменять и читать макросы».

      Затем при запуске макроса вылезает ошибка в месте, где я снимаю защиту с листа.
      И действительно, в меню Сервис->Защита нельзя Снять защиту листа.

      Как это обойти, может кто подскажет.

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


      ГостьПроездом



      Сообщ.
      #2

      ,
      20.01.09, 07:33

        Full Member

        ***

        Рейтинг (т): 1

        1. При включенном совместном доступе действительно код макроса недоступен.
        2. И в меню снятие защиты также недоступно :)

        У меня была такая задача. Книга с совместным доступом, для некоторых людей лист защищается, для некоторых — нет.

        При открытии книги:

        ExpandedWrap disabled

          Private Sub Workbook_Open()

            If ActiveSheet.Name = «КА» Then

              Call ProtectSomeColumnsOnNecessarity

            End If

          End Sub

        ExpandedWrap disabled

          Public Sub ProtectSomeColumnsOnNecessarity()

            PswdToProtect = «M@ke_protect@ble»

            Dim KA_Sh As Worksheet

            Set KA_Sh = ActiveSheet

            ManagerName = Environ(«USERNAME»)

            If ManagerName <> «User1» And ManagerName <> «User2» Then

              ‘ блокируем столбец «Предоставление документов» — для этого делается следующее:

              ‘   1. предварительно в других столбцах при форматировании ячеек на вкладке Protection снимается св-во Locked

              ‘   2. лист блокируется, при этом можно выполнять все операции, и лишь столбец блокированных ячеек будет защищен

              On Error GoTo FinishSubHndl

              KA_Sh.Protect Password:=PswdToProtect, _

                    AllowFormattingCells:=True, _

                    AllowFormattingColumns:=True, _

                    AllowFormattingRows:=True, _

                    AllowInsertingColumns:=True, _

                    AllowInsertingRows:=True, _

                    AllowInsertingHyperlinks:=True, _

                    AllowDeletingRows:=True, _

                    AllowSorting:=True, _

                    AllowFiltering:=True, _

                    AllowUsingPivotTables:=True

            Else

              ‘ Для User1 и User2 ограничений на ввод информации нет

              KA_Sh.Unprotect Password:=PswdToProtect

            End If

          FinishSubHndl:

                    Exit Sub

          End Sub

        У меня Excel2003, и код работает. Удачи


        PiJon



        Сообщ.
        #3

        ,
        20.01.09, 13:13

          Member

          **

          Рейтинг (т): нет

          Спасибо, попробую.

          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

          0 пользователей:

          • Предыдущая тема
          • VB for Application
          • Следующая тема

          Рейтинг@Mail.ru

          [ Script execution time: 0,1807 ]   [ 16 queries used ]   [ Generated: 14.04.23, 00:17 GMT ]  

          Понравилась статья? Поделить с друзьями:
        • Excel vba обращение к элементу массива
        • Excel vba обращение к закрытой книге
        • Excel vba обращение к активному листу
        • Excel vba обратиться к ячейке умной таблицы
        • Excel vba обратиться к форме