Добрый день, помогите доломать макрос. Имеются 2 вновь созданных в 2016 экселе файла. Первый xlsx, второй xlsm. На первом файле стоит фильтр, есть пароль "666" и установлен общий доступ к файлу. Из второго файла запускается макрос который должен снять все установленные фильтры. Если на первом файле нет пароля макрос срабатывает на ура, но если установлен пароль то появляется ошибка и фильтры не снимаются. Что это может быть такое и можно ли это исправить?
Добрый день, помогите доломать макрос. Имеются 2 вновь созданных в 2016 экселе файла. Первый xlsx, второй xlsm. На первом файле стоит фильтр, есть пароль "666" и установлен общий доступ к файлу. Из второго файла запускается макрос который должен снять все установленные фильтры. Если на первом файле нет пароля макрос срабатывает на ура, но если установлен пароль то появляется ошибка и фильтры не снимаются. Что это может быть такое и можно ли это исправить?Garik007
Снимаем ощий доступ, снимаем защиту листа, снимаем фильтр, ставим защиту листа, ставим общий доступ [vba]
Код
Sub фильтр()
Dim tPath As String Dim wbOp As Workbook
tPath = "" tPath = ThisWorkbook.Path Set wbOp = Workbooks.Open(Filename:=tPath & "\1.xlsx") With wbOp Application.DisplayAlerts = 0 If ActiveWorkbook.MultiUserEditing Then .ExclusiveAccess End If .Sheets("Лист1").Unprotect Password:="666" If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData .Sheets("Лист1").Protect Password:="666", UserInterfaceOnly:=True, _ DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True .SaveAs AccessMode:=xlShared Application.DisplayAlerts = 1 End With End Sub
[/vba]
Снимаем ощий доступ, снимаем защиту листа, снимаем фильтр, ставим защиту листа, ставим общий доступ [vba]
Код
Sub фильтр()
Dim tPath As String Dim wbOp As Workbook
tPath = "" tPath = ThisWorkbook.Path Set wbOp = Workbooks.Open(Filename:=tPath & "\1.xlsx") With wbOp Application.DisplayAlerts = 0 If ActiveWorkbook.MultiUserEditing Then .ExclusiveAccess End If .Sheets("Лист1").Unprotect Password:="666" If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData .Sheets("Лист1").Protect Password:="666", UserInterfaceOnly:=True, _ DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True .SaveAs AccessMode:=xlShared Application.DisplayAlerts = 1 End With End Sub
_Boroda_, спасибо, вечером буду пробовать. А не слетит ли возможность работать и вносить изменения в первый файл с общим доступом у других пользователей, которые в период работы макроса работают в нем, т.к. если один из пользователей вручную снимает и ставит общий доступ, то другие пользователи, работающие в это время с файлом, не смогут сохранить внесенные изменения?
_Boroda_, спасибо, вечером буду пробовать. А не слетит ли возможность работать и вносить изменения в первый файл с общим доступом у других пользователей, которые в период работы макроса работают в нем, т.к. если один из пользователей вручную снимает и ставит общий доступ, то другие пользователи, работающие в это время с файлом, не смогут сохранить внесенные изменения?Garik007
Имеется файл, общая база куда заносится информация по судам, исполнительному производству и т.п., это первый файл из примера. Другой файл, это второй файл из примера, формирует заявление в суд, после формирования необходимо проверить по нескольким критериям в первом совпадения подавалось ли ранее на это лицо в суд: если подавалось, то в файле обновляется некоторая информация, если нет, то добавляется новая строчка и вносится определенная информация. Макрос этот нужен чтобы два раза не заносить одну и туже информацию. Макрос который осуществляет проверку нашел на каком-то сайте, но он почему-то не проверяет на совпадения в случае если в первом файле установлен фильтр, а просто заносит информацию из второго файла в первую строчку первого файла. Вручную фильтр снимается без вопросов, а на макросе почему-то спотыкается.
Имеется файл, общая база куда заносится информация по судам, исполнительному производству и т.п., это первый файл из примера. Другой файл, это второй файл из примера, формирует заявление в суд, после формирования необходимо проверить по нескольким критериям в первом совпадения подавалось ли ранее на это лицо в суд: если подавалось, то в файле обновляется некоторая информация, если нет, то добавляется новая строчка и вносится определенная информация. Макрос этот нужен чтобы два раза не заносить одну и туже информацию. Макрос который осуществляет проверку нашел на каком-то сайте, но он почему-то не проверяет на совпадения в случае если в первом файле установлен фильтр, а просто заносит информацию из второго файла в первую строчку первого файла. Вручную фильтр снимается без вопросов, а на макросе почему-то спотыкается.Garik007
Сообщение отредактировал Garik007 - Среда, 25.10.2017, 13:27
Тогда наверное было бы логичнее в новой теме поправить тот макрос
Спасибо за предложение, тему пока создавать не буду. Когда готовил файл чтобы выложить его в новой теме понял причину: макрос вел поиск до первой пустой ячейки по колонке № п/п, а так как нумерация была динамической и в зависимости от выставленного фильтра всегда начиналась с начала, то и поиск, когда стоял фильтр на какой-либо ячейке, прерывался на первой же ячейке. Поменял поиск на другую колонку и все заработало. Еще раз спасибо.
Цитата_Boroda_ ()
Тогда наверное было бы логичнее в новой теме поправить тот макрос
Спасибо за предложение, тему пока создавать не буду. Когда готовил файл чтобы выложить его в новой теме понял причину: макрос вел поиск до первой пустой ячейки по колонке № п/п, а так как нумерация была динамической и в зависимости от выставленного фильтра всегда начиналась с начала, то и поиск, когда стоял фильтр на какой-либо ячейке, прерывался на первой же ячейке. Поменял поиск на другую колонку и все заработало. Еще раз спасибо.Garik007