Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/При открытии файла макрос не снимает фильтр - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
При открытии файла макрос не снимает фильтр
Garik007 Дата: Среда, 25.10.2017, 11:09 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013, 2016
Добрый день, помогите доломать макрос.
Имеются 2 вновь созданных в 2016 экселе файла. Первый xlsx, второй xlsm. На первом файле стоит фильтр, есть пароль "666" и установлен общий доступ к файлу. Из второго файла запускается макрос который должен снять все установленные фильтры. Если на первом файле нет пароля макрос срабатывает на ура, но если установлен пароль то появляется ошибка и фильтры не снимаются. Что это может быть такое и можно ли это исправить?
К сообщению приложен файл: 9053625.zip (20.5 Kb)


Сообщение отредактировал Garik007 - Среда, 25.10.2017, 11:09
 
Ответить
СообщениеДобрый день, помогите доломать макрос.
Имеются 2 вновь созданных в 2016 экселе файла. Первый xlsx, второй xlsm. На первом файле стоит фильтр, есть пароль "666" и установлен общий доступ к файлу. Из второго файла запускается макрос который должен снять все установленные фильтры. Если на первом файле нет пароля макрос срабатывает на ура, но если установлен пароль то появляется ошибка и фильтры не снимаются. Что это может быть такое и можно ли это исправить?

Автор - Garik007
Дата добавления - 25.10.2017 в 11:09
_Boroda_ Дата: Среда, 25.10.2017, 12:20 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Снимаем ощий доступ, снимаем защиту листа, снимаем фильтр, ставим защиту листа, ставим общий доступ
[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]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеСнимаем ощий доступ, снимаем защиту листа, снимаем фильтр, ставим защиту листа, ставим общий доступ
[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]

Автор - _Boroda_
Дата добавления - 25.10.2017 в 12:20
Garik007 Дата: Среда, 25.10.2017, 12:46 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013, 2016
_Boroda_, спасибо, вечером буду пробовать.
А не слетит ли возможность работать и вносить изменения в первый файл с общим доступом у других пользователей, которые в период работы макроса работают в нем, т.к. если один из пользователей вручную снимает и ставит общий доступ, то другие пользователи, работающие в это время с файлом, не смогут сохранить внесенные изменения?
 
Ответить
Сообщение_Boroda_, спасибо, вечером буду пробовать.
А не слетит ли возможность работать и вносить изменения в первый файл с общим доступом у других пользователей, которые в период работы макроса работают в нем, т.к. если один из пользователей вручную снимает и ставит общий доступ, то другие пользователи, работающие в это время с файлом, не смогут сохранить внесенные изменения?

Автор - Garik007
Дата добавления - 25.10.2017 в 12:46
_Boroda_ Дата: Среда, 25.10.2017, 12:54 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Должна слететь по идее.
А зачем Вы вообще все это делаете?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДолжна слететь по идее.
А зачем Вы вообще все это делаете?

Автор - _Boroda_
Дата добавления - 25.10.2017 в 12:54
Garik007 Дата: Среда, 25.10.2017, 13:19 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013, 2016
А зачем Вы вообще все это делаете?

Имеется файл, общая база куда заносится информация по судам, исполнительному производству и т.п., это первый файл из примера.
Другой файл, это второй файл из примера, формирует заявление в суд, после формирования необходимо проверить по нескольким критериям в первом совпадения подавалось ли ранее на это лицо в суд: если подавалось, то в файле обновляется некоторая информация, если нет, то добавляется новая строчка и вносится определенная информация. Макрос этот нужен чтобы два раза не заносить одну и туже информацию.
Макрос который осуществляет проверку нашел на каком-то сайте, но он почему-то не проверяет на совпадения в случае если в первом файле установлен фильтр, а просто заносит информацию из второго файла в первую строчку первого файла.
Вручную фильтр снимается без вопросов, а на макросе почему-то спотыкается.


Сообщение отредактировал Garik007 - Среда, 25.10.2017, 13:27
 
Ответить
Сообщение
А зачем Вы вообще все это делаете?

Имеется файл, общая база куда заносится информация по судам, исполнительному производству и т.п., это первый файл из примера.
Другой файл, это второй файл из примера, формирует заявление в суд, после формирования необходимо проверить по нескольким критериям в первом совпадения подавалось ли ранее на это лицо в суд: если подавалось, то в файле обновляется некоторая информация, если нет, то добавляется новая строчка и вносится определенная информация. Макрос этот нужен чтобы два раза не заносить одну и туже информацию.
Макрос который осуществляет проверку нашел на каком-то сайте, но он почему-то не проверяет на совпадения в случае если в первом файле установлен фильтр, а просто заносит информацию из второго файла в первую строчку первого файла.
Вручную фильтр снимается без вопросов, а на макросе почему-то спотыкается.

Автор - Garik007
Дата добавления - 25.10.2017 в 13:19
_Boroda_ Дата: Среда, 25.10.2017, 13:59 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Тогда наверное было бы логичнее в новой теме поправить тот макрос, который
почему-то не проверяет на совпадения в случае если в первом файле установлен фильтр


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТогда наверное было бы логичнее в новой теме поправить тот макрос, который
почему-то не проверяет на совпадения в случае если в первом файле установлен фильтр

Автор - _Boroda_
Дата добавления - 25.10.2017 в 13:59
Garik007 Дата: Среда, 25.10.2017, 15:54 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013, 2016
Цитата _Boroda_ ()
Тогда наверное было бы логичнее в новой теме поправить тот макрос

Спасибо за предложение, тему пока создавать не буду.
Когда готовил файл чтобы выложить его в новой теме понял причину: макрос вел поиск до первой пустой ячейки по колонке № п/п, а так как нумерация была динамической и в зависимости от выставленного фильтра всегда начиналась с начала, то и поиск, когда стоял фильтр на какой-либо ячейке, прерывался на первой же ячейке. Поменял поиск на другую колонку и все заработало.
Еще раз спасибо.
 
Ответить
Сообщение
Цитата _Boroda_ ()
Тогда наверное было бы логичнее в новой теме поправить тот макрос

Спасибо за предложение, тему пока создавать не буду.
Когда готовил файл чтобы выложить его в новой теме понял причину: макрос вел поиск до первой пустой ячейки по колонке № п/п, а так как нумерация была динамической и в зависимости от выставленного фильтра всегда начиналась с начала, то и поиск, когда стоял фильтр на какой-либо ячейке, прерывался на первой же ячейке. Поменял поиск на другую колонку и все заработало.
Еще раз спасибо.

Автор - Garik007
Дата добавления - 25.10.2017 в 15:54
_Boroda_ Дата: Среда, 25.10.2017, 16:06 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Я примерно так и предполагал
Вот так лучше определять последнюю строку в Вашем случае
[vba]
Код
dd = wbOp.Sheets("Лист1").UsedRange.Rows.Count
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЯ примерно так и предполагал
Вот так лучше определять последнюю строку в Вашем случае
[vba]
Код
dd = wbOp.Sheets("Лист1").UsedRange.Rows.Count
[/vba]

Автор - _Boroda_
Дата добавления - 25.10.2017 в 16:06
Garik007 Дата: Среда, 25.10.2017, 17:30 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013, 2016
_Boroda_, благодарю. Получается что снятие фильтра в итоге и не было нужно для решения моей задачи.


Сообщение отредактировал Garik007 - Среда, 25.10.2017, 17:30
 
Ответить
Сообщение_Boroda_, благодарю. Получается что снятие фильтра в итоге и не было нужно для решения моей задачи.

Автор - Garik007
Дата добавления - 25.10.2017 в 17:30
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!