Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Вставка массива или автозаполнение. Как я это сделал?, Каким-то образом вставил целые области, но не могу это повторить.
 
Уррррррррррррааааааааа! Спасибо, Alien Sphinx и Дмитрий Щербаков. Сразу дошло до меня. Оказывается, последовательность действий была такая:

В нужной ячейке ставлю "="
Перехожу на требуемый Лист с данными.
Выделяю нужный диапазон.
Нажимаю Enter.
Всё. Нижние ячейки автоматом заполняются массивом.

Я сам того не осознавая использовал формулу массива. Я это только теперь понял. Особенно, прочитав инфу по запросу "Динамические массивы" https://www.planetaexcel.ru/techniques/2/9112/, где указано, что можно забыть про сочетание CTRL+SHIFT+ENTER.

Практически никогда не пользовался формулой массива (наверное, зря), поэтому и впал в тупняк.

Огромное спасибо за оперативную помощь, друзья!
Изменено: boberchik - 26.05.2023 12:09:08
Вставка массива или автозаполнение. Как я это сделал?, Каким-то образом вставил целые области, но не могу это повторить.
 
Так это было буквально вчера-позавчера. Тот же Excel 2021, я ничего не переустанавливал. Я даже не знал такой штуки "динамический массив". Помню только, что программа какое-то сообщение вывела, ну я не вникал - нажал или ОК, или закрыть - я даже не помню. И просто радовался, как просто стало делать вставку. Но почему-то сейчас это не работает. Тот же файл, тот же Excel, те же руки-крюки :)
Никаких других комбинаций кроме CTRL+C, CTRL+V я не знаю. Ну знаю еще выбор вариантов вставки через CTRL
Вставка массива или автозаполнение. Как я это сделал?, Каким-то образом вставил целые области, но не могу это повторить.
 
Добрый день! У меня тут случился небольшой казус. Буквально позавчера работал с Книгой. Создал в ней отдельный Лист и каким-то неведомым мне образом вставил туда целые области ячеек.
Вроде бы использовал только CTRL+C, CTRL+V.
Не знаю, как описать результат, но он отличный получился. Просто выделял нужные области с других Листов, переходил на нужный Лист, кликал в ячейку и вставлял - а вставлялось как будто массивом. Это видно на скринах.
Если кликнуть на верхней ячейке, то в области формул черным цветом. Если ниже - то серым. И куда ни кликни - выделяется конкретная область массива. Такая синеватая тонкая рамка.

И всё бы отлично, но сегодня уже три часа пытаюсь повторить то же самое, с этими же Листами, этими же областями - не получается так же вставить. Хочу просто правее продолжать вставку - а не получается. Максимум, можно выбрать вставку "Значения", "Ссылку" - но это не то.

Как я это сделал? Как сделать так же? Я себе всю голову сломал. Пробовал гуглить "Вставка массива", "Синяя рамка" и пр. Всё не то.
Изменено: boberchik - 26.05.2023 11:41:46
VBA Фоновое открытие Книг в папке, кроме уже открытых, Макрос должен открывать все Книги в папке, кроме уже открытых
 
Так как обновление нескольких файлов занимает какое-то время, то решил добавить возможность выбора - делать обновление файлов или просто открыть данную Книгу:
Код
'чтобы запускался при открытии Книги...
Sub Workbook_Open()

'выводим сообщение с вопросом
Dim RetVal As Long
Retry_:
RetVal = MsgBox("Обновить все связи и запросы? Потребуется около 1 минуты", _
vbYesNo + vbQuestion)
Select Case RetVal
Case vbNo
Exit Sub
Case vbYes
End Select

With Application 'операции с приложением/отключаем для повышения скорости работы макроса
.ScreenUpdating = False 'обновление экрана
.DisplayAlerts = False 'вывод системных сообщений
Папка = "C:\Test\"
'------------ Excel-файлы в этой папке ------------------
Имя = Dir(Папка & "Себестоимость*.xlsx")
Do While Имя <> ""
If IsBookOpen(Папка & Имя) = False Then
With .Workbooks.Open _
(FileName:=Папка & Имя, UpdateLinks:=True)
'здесь Ваш макрос делает свое грязное дело
.Close SaveChanges:=True
End With
End If
Имя = Dir
Loop
.ScreenUpdating = True 'обновление экрана
.DisplayAlerts = True 'вывод системных сообщений
End With
'Neimar, код ThisWorkBook.RefreshAll или ActiveWorkBook.RefreshAll обновляет всё, в том числе и запросы - и имени запросов знать не надо  ;)
'Это макроаналог нажатия кнопки "Обновить всё" на вкладке "Данные".
'Горячая комбинация кнопки — "Ctrl+Alt+F5"
ThisWorkbook.RefreshAll
End Sub



Function IsBookOpen(wbFullName As String) As Boolean
    Dim iFF As Integer, RetVal As Boolean
    iFF = FreeFile
    On Error Resume Next
    Open wbFullName For Random Access Read Write Lock Read Write As #iFF
    RetVal = (Err.Number <> 0)
    Close #iFF
    IsBookOpen = RetVal
End Function

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

update: добавил в конце еще обновление всей книги, чтобы все запросы PQ обновились: ThisWorkbook.RefreshAll
Код
'Макрос при открытии Книги открывает все файлы в Папке по очереди, обновляет связи, сохраняет и закрывает. Если файл уже открыт, то он пропускается.
Sub update()
With Application 'операции с приложением/отключаем для повышения скорости работы макроса
.ScreenUpdating = False 'обновление экрана
.DisplayAlerts = False 'вывод системных сообщений
Папка = "C:\Test\"
'------------ Excel-файлы в этой папке ------------------
Имя = Dir(Папка & "*.xlsx")
Do While Имя <> ""
If IsBookOpen(Папка & Имя) = False Then
With .Workbooks.Open _
(FileName:=Папка & Имя, UpdateLinks:=True)
'здесь Ваш макрос делает свое грязное дело
.Close SaveChanges:=True
End With
End If
Имя = Dir
Loop
.ScreenUpdating = True 'обновление экрана
.DisplayAlerts = True 'вывод системных сообщений
End With
ThisWorkbook.RefreshAll
End Sub



Function IsBookOpen(wbFullName As String) As Boolean
    Dim iFF As Integer, retval As Boolean
    iFF = FreeFile
    On Error Resume Next
    Open wbFullName For Random Access Read Write Lock Read Write As #iFF
    retval = (Err.Number <> 0)
    Close #iFF
    IsBookOpen = retval
End Function
Изменено: boberchik - 24.03.2023 11:29:21
VBA Фоновое открытие Книг в папке, кроме уже открытых, Макрос должен открывать все Книги в папке, кроме уже открытых
 
Цитата
написал:
м-да...тяжко Вам придется. В статье конкретный пример приведен, только что цикла нет...
Дим, я ж не спец в VBA вообще, мне не придется, мне уже тяжко :). Это не моя основная работа, просто стараюсь автоматизировать свои процессы насколько это возможно. В Excel много чего могу, а вот VBA только-только начинаю изучать. Пока что на уровне "Нагуглить готовый макрос и немного подкорректировать его под свою задачу". Но я учусь :) Всю найденную инфу сохраняю. Нет предела совершенству.

За желание помочь огроменное спасибо! Я внедрил твой код в свой файл - вроде работает как надо. Буду еще тестить.

PS В качестве благодарности за готовый макрос готов закинуть на пару литров томатного сока ;) Кинь в личку контакт
VBA Фоновое открытие Книг в папке, кроме уже открытых, Макрос должен открывать все Книги в папке, кроме уже открытых
 
Функцию проверил, она работает. Но не хватает ума пристроить ее внутрь цикла...
VBA Фоновое открытие Книг в папке, кроме уже открытых, Макрос должен открывать все Книги в папке, кроме уже открытых
 
Нарамблерил еще немного информации. Натыкал вот такой макрос:

Код
Function BookOpenClosed(wbName As String) As Boolean
    Dim myBook As Workbook
    On Error Resume Next
        Set myBook = Workbooks(wbName)
    BookOpenClosed = Not myBook Is Nothing
End Function
Sub Primer1()
    If BookOpenClosed("Книга1.xlsx") Then
        MsgBox "Книга открыта"
    Else
        MsgBox "Книга закрыта"
    End If
End Sub


Он работает, но как его интегрировать в мою задачу - у меня мозгов не хватает пока что.
Изменено: boberchik - 23.03.2023 12:31:44
VBA Фоновое открытие Книг в папке, кроме уже открытых, Макрос должен открывать все Книги в папке, кроме уже открытых
 
Ребята, всем привет! Помогите доработать макрос. Я его нашел на просторах интернета, добавил к своей Книге - работает, но есть нюансы.

Изначальная задача: при открытии Альфа-Книги необходимо в фоновом режиме открыть все Книги в Папке, сохранить изменения и закрыть.
Тестовый запуск показал, что файлы открываются, сохраняются и закрываются нормально. Но только до тех пор, пока не случается ситуация, когда один из файлов в Папке уже кем-то открыт. Тогда работа макроса приостанавливается с запросом сохранения данного файла.

Как бы мне сделать так, чтобы макрос пропускал файлы, если они в данный момент уже открыты?

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

Код
Sub update()
With Application 'операции с приложением/отключаем для повышения скорости работы макроса
.ScreenUpdating = False 'обновление экрана
.DisplayAlerts = False 'вывод системных сообщений
Папка = "C:\Test\"
'------------ Excel-файлы в этой папке ------------------
Имя = Dir(Папка & "*.xlsx")
Do While Имя <> ""
With .Workbooks.Open _
(Filename:=Папка & Имя, UpdateLinks:=True)
'здесь Ваш макрос делает свое грязное дело
.Close SaveChanges:=True
End With
Имя = Dir
Loop
.ScreenUpdating = True 'обновление экрана
.DisplayAlerts = True 'вывод системных сообщений
End With
End Sub
Изменено: boberchik - 23.03.2023 11:52:00
Макрос "Обновление связей". Несколько книг со связями
 
Друзья, задачу решил! Каким-то образом нагуглил связку bat-файлик и макрос "PowerShell".

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

Батник выглядит вот так:
Код
@echo off
%~d0
cd "%~p0"
echo Выполняем.
powershell /nologo /ExecutionPolicy bypass .\script.ps1
echo Готово.
"pause"
Для отладки удалите кавычки на pause. Тогда окно консоли не закроется автоматически.

Скрипт выглядит так:
Код
$excel = new-object -comobject excel.application
$wbook = $excel.workbooks.open("C:\test\Книга 2.xlsx")
$excel.visible = $false
start-sleep -seconds 5
$wbook.save()
$excel.quit()

$excel = new-object -comobject excel.application
$wbook = $excel.workbooks.open("C:\test\Книга 3.xlsx")
$excel.visible = $false
start-sleep -seconds 5
$wbook.save()
$excel.quit()
У меня Книг для открытия больше двух, но я оставил только 2 блока, чтобы не пугать размером скрипта. Там всё повторяется, кроме названия Книг.

Отображение окна Excel выключено ($false). Задержку после открытия поставил 5 секунд.
bat-файл и макрос находятся в одном каталоге. Это важно.

Теперь каждый вечер все Книги открываются, таким образом обновляются связи с файлом "Цены", сохраняются и закрываются автоматически. И сводная таблица имеет свежие, обновленные итоговые данные. Без необходимости вручную это делать.

Информацию взял отсюда:
Открыть, сохранить и закрыть файл Excel
Скрипт сразу не заработал (естественно :)). Поэтому пришлось эту тему тоже загуглить:
Ошибка «Невозможно загрузить файл ….ps1, так как выполнение сценариев отключено в этой системе»
Собирать статистику, чтобы потом построить график изменения цены, автоматическое заполнение ячеек с заданным периодом
 
Добрый день, ув. гуру ! Прошу помощи, может, какие идеи есть. Суть задачи:

Есть Книга, в которой один Лист. По сути - прайс. Столбец "Наименование" и Столбец "Цена". Значения цен постоянно на протяжение многих лет корректируются вручную - рандомно в зависимости от изменений цен на товар. Какие-то позиции раз в неделю. Какие-то раз в год. Этот процесс нормальный, всех устраивает.

Но нужно собирать статистику, чтобы потом построить график изменения цены.
То есть в отдельном Листе иметь тот же список товаров и много столбцов с Ценой, столбцы с шагом в 1 месяц, например. И чтобы один раз в месяц в определенное время значение текущей цены товара заносилось в Лист Статистики в первый столбец. Через месяц - во второй столбец. Через месяц - в третий столбец. И так далее.

Лично я пока вижу общее решение только такое. Процесс заполнения ячеек как мне кажется должен выполнять Макрос (тут я увы ноль). А открытие файла в определенное время - какой-то bat или powershell (я уже создавал скрипт на обновление связей, но это тупо копипаст из интернета, я только лишь пути свои поставил, создать с нуля я бы не смог). Скрипт открывает файл, ждет 5 секунд, сохраняет и закрывает. Это работает нормально.

Погуглил тему Powershell Excel. Нашел вот такое на просторах рунета
На 80% уверен, что это тот самый нужный мне инструмент. Осталось дело за малым  :cry:  Изучить язык Powershell.
Изменено: boberchik - 11.11.2021 11:58:58
Макрос "Обновление связей". Несколько книг со связями
 
Цитата
msi2102 написал: Если Вы просто обновляете данные может Вам начать пользовать Power Query.
По Вашему первому сообщению, без файлов с примерами, трудно понять, что именно Вы хотите видеть
За наводку на Power Query огромное спасибо! Загуглил, что это такое. После прочтения описания стало понятно, что я многое упустил, пользуясь Excel без этой штуки. Но ничего, наверстаю.
Да, без файлов с примерами трудно. Я бы и сам не факт, что понял бы суть проблемы :)

Цитата
RAN написал: а то, что у вас ждет дату "30.12.1899 15:02:47"
Попозже поизучаю, спасибо.

Цитата
sokol92 написал: Некоторые функции не работают с закрытыми книгами
Да, это я не так давно осознал уже на примере функции ДВССЫЛ. Очень был удивлен, что она работает только с открытыми книгами. Но в контексте моей задачи отношения не имеет. У меня все функции вида - ИНДЕКС(ПОИСКПОЗ... ПОИСКПОЗ...)
Макрос "Обновление связей". Несколько книг со связями
 
Блин, ну я бы с радостью! Но у меня Альфа-книга ссылается на Основной расчет, а Расчет ссылается на Справочник. И в каждой их этих Книг несколько Листов (а то и десятков), а на каждом листе десятки таблиц, в каждой таблице сотня-другая ячеек. Таблицы - просто однотипный набор ячеек, визуально оформленный так, чтобы выглядел отдельной таблицей. Никаких "Умных таблиц" нет. Выкладывать "как есть" я это не могу по понятным причинам.

Если появится возможность, создам аналог всего этого безобразия без конкретных данных. Прям очень-очень постараюсь.
Как задать массив в ИНДЕКС начиная с ячейки, определяемой формулой ?, Как задать массив через формулу?
 
Огромное спасибо за помощь! Супер!  
Макрос "Обновление связей". Несколько книг со связями
 
Добрый день всем! Есть вроде бы простая задача, которую мне никак не удается решить.

Есть несколько книг: первая книга - самая простая, простой "справочник", наименование товара и его цена на сегодняшний день (под сотню-другую строк). Эта книга вручную корректируется довольно часто (цены же растут). Назовем ее Книга №1.

Второй тип книги - "основной расчет", в книге несколько Листов. На этих Листах формулы ссылаются на Первую книгу и содержат формулы "ВПР", ну то есть поиск цены для конкретного товара.

Книг второго типа несколько, в каждой - десятки Листов, на каждом Листе - сотни формул. Назовем эти книги "Книги №2.1, 2.2, 2.3 и т.д.)

И есть третий тип Книги. Я назвал ее "сводная". Она собирает во всех Книг второго типа данные. Формулы очень сложные. С помощью этого форума я смог сделать формулу практически универсальной вида ИНДЕКС (ПОИСКПОЗ.... ; ПОИСКПОЗ;....). Учитывая, что путь к файлам находится на сервере, типа X:\Каталог номер 1\Каталог номер 2\[Название книги номер 1]Лист такой-то!...и так далее, формула с трудом умещается на 2 строчках. Но не суть. Назовем ее Книга №3.

Проблема: Книга третьего типа (№3) при открытии НЕ учитывает изменение данных в Книге №1. Чтобы результаты расчетов стали актуальными нужно открыть каждую Книгу 2.1.....2.10, ничего не меняя в ней сохранить её. И тогда уже открывать Книгу №3.

В принципе, наверное, это логично. С точки зрения Excel 2013. Но капец как неудобно.

Основная цель: чтобы после изменения значений цены в Книге №1 (и её закрытия) значения в Книге №3 были актуальными БЕЗ необходимости открывать Книги №2.1....2.10.

Я тут основательно погуглил "обновление связей макросом". Даже попробовал внедрить в Книгу №3 эти макросы. Разные. Результат нулевой. Что сделал:

1. В Книге №3 поставил при открытии Книги "Не задавать вопрос и обновлять связи".
2. В Книгах №2.1...2.10 сделал то же самое.
3. Попытался в Книгу №3 разные макросы вставлять. Тут самое трудное, т.к. я вообще ничего не понимаю в VBA. Всё, что могу - тупо скопипастить код.

Я нашел вот такие:

Первый - обновляет каждые x минут/секунд. Я сделал каждые 2 секунды. Результат - счетчик в ячейке X1 тикает, макрос работает, но

Код
Sub go_()
    Up_
End Sub
Sub Up_()
    Dim tn_
    ActiveWorkbook.RefreshAll
    tn_ = TimeSerial(Hour(Now) + 0, Minute(Now), Second(Now) + 2)
    Range("X1") = Range("X1") + 1
    Application.OnTime tn_, "Up_"
End Sub


И второй, вроде как должен решить мою задачу, но увы. Ничего не меняется. Кстати, скопировал сюда макрос и только что увидел, что расширение стоит .xls, а у меня все файлы .xlsx, и у Книги №3 .xlsm (из-за макросов), может быть причина в этом? Щас попробую ... А, всё, увидел - там звездочка в конце.
Код
Sub update()
With Application 'операции с приложением/отключаем для повышения скорости работы макроса
.ScreenUpdating = False 'обновление экрана
.DisplayAlerts = False 'вывод системных сообщений
Папка = "C:\тест\"
'------------ Excel-файлы в этой папке ------------------
Имя = Dir(Папка & "*.xls*")
Do While Имя <> ""
With .Workbooks.Open _
(Filename:=Папка & Имя, UpdateLinks:=True)
'здесь Ваш макрос делает свое грязное дело
.Close SaveChanges:=True
End With
Имя = Dir
Loop
.ScreenUpdating = True 'обновление экрана
.DisplayAlerts = True 'вывод системных сообщений
End With
End Sub

Все эти коды я нашел на просторах инета, автор их - не я.

upd: изменил отображение кода
Как задать имя листа формулой и использовать в другой формуле
 
Ну что же))) Отпуск несколько затянулся... На год  :oops:
Тем не менее, функцию ДВССЫЛ изучил, спасибо за наводку. Работает так, как хотел, кроме одного огромнейшего минуса - не работает с другими (закрытыми) книгами. Но это уже совсем другая история (С)
Как задать имя листа формулой и использовать в другой формуле
 
БМВ, спасибо, после отпуска попробую реализовать.
Как задать имя листа формулой и использовать в другой формуле
 
Как бы мне объяснить кратко и понятно. Может, картинка поможет?

Как сделать так, чтобы вручную не менять формулы, а вставить ссылку на второй столбец?
Как задать имя листа формулой и использовать в другой формуле
 
Пока не могу понять, как применить это в моей формуле. У меня же задается массив: ИНДЕКС(Э.40!$A$2:$BG$200;ПОИСКПОЗ...
Т.е. Лист "Э.40", массив A2:BG200
Изменено: boberchik - 21.05.2019 14:16:12
Как задать имя листа формулой и использовать в другой формуле
 
Как мне кажется, это не совсем то. Может быть я не разобрался еще?

У меня есть сводная таблица. Первый стоблец содержит некий шифр. Например: Эконом.4000; Эконом.5000; Эконом.4500 и так далее; Норма.3000; Норма.5000; Норма.5500 и так далее.

Второй столбец - автоматически собираются значения вида Э.40, Э.50, Э.45, Н.30, Н.50, Н.55 и так далее. Тут вопросов нет, делать это я умею.

Далее - книга содержит Листы с именами точно как во втором столбце, т.е. Э.40....Э.60, Н.30.....Н.60 и так далее.

А третий столбец как раз должен содержать формулу (в первом сообщении), в которой указываю массив в нужном Листе. Ячейки массива везде одинаковые, отличия только в названии Листа.
И вот вписать в эту формулу имена Листов автоматически у меня не получается пока что :(
Как задать имя листа формулой и использовать в другой формуле
 
Добрый день, ув. форумцы! Никак не удается решить одну проблему.
Есть лист в книге, в котором я свожу все данные со всех листов. В одном из столбцов есть формула вида ИНДЕКС(Э.40!$A$2:$BG$200;ПОИСКПОЗ... и так далее (и там тоже есть 3 раза указание массива на листе Э.40 с указанием ячеек.

Так вот проблема в том, что простой протяжкой не удается получить результат по той причине, что листов в книге очень много. Например: Э.40, Э.50, Э.55 и так далее, Т.20, Т.30, Т.40, Т.42.
Но имя листа четко подчиняется одному правилу. И я могу вставить еще один столбец и в нем будет автоматически прописано Э.40...Э50....Т.30.... и так далее.

Но как в формулу с ИНДЕКС(Э.40!.......) вставить ссылку на ячейку соседнего столбца? Сделав таким образом формулу полностью универсальную.

А щас приходится менять формулу для группы строк (менять 40 на 50, менять Э на Т и так далее)

То есть как задать конкретное указание Листа в книге через ссылку на ячейку, в которой прописана формула типа Сцепить "ЛЕВСИМВ"&".".... ну понимаете о чем я.  
Как задать массив в ИНДЕКС начиная с ячейки, определяемой формулой ?, Как задать массив через формулу?
 
V, интересное решение, я не подумал о наименовании диапазонов, но количество столбцов у меня в каждом диапазоне может быть разное. Сегодня 3, завтра 6 - и аналогично в других Листах. Хотелось бы универсальное гибкое решение.

Казанский, сделал как указано. Офигел, это реально то, что нужно. Но пока не понял, как это работает. Пока не пойму логику работы, не смогу использовать. Но уже - ОГРОМНОЕ СПАСИБО !
Изменено: boberchik - 11.03.2019 16:07:19
Как задать массив в ИНДЕКС начиная с ячейки, определяемой формулой ?, Как задать массив через формулу?
 
Уважаемые гуру! Очень многому научился с помощью этого ресурса. Нашел ответы на многие вопросы. Но тут никак не могу разобраться.

Суть задачи такая, попробую максимально упростить. Есть Лист1 и Лист2.


На Лист1 у меня ячейка с функцией ИНДЕКС, внутри которой столбец и строка задаются через ПОИСКПОЗ.

И тут самое интересное. Если просто оставить табличку "альфа" и 5, 6, 7; то ПОИСКПОЗ я могу легко использовать для поиска нужного столбца. Но у меня как бы 3 и более "подтабличек", и значения могут повторяться, т.е. просто ПОИСКПОЗ нельзя использовать.

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

Щас попробую пример оформить получше, минуту

Добавил пример. Описание немного корявое. Но суть вроде ясна. Назову область ячеек у Альфа и Бета "субтаблица", они на одном листе. Модификация внутри субтаблицы всегда разная. То есть не может быть 6,6,7,7,8.... Только 6, 8, 12, 20, 50 и т.д.
То же и у Беты. Но у Альфы и Беты могут быть одинаковые модификации. Например, и там, и там 8, 10.

Логично, что в ПОИСКПОЗ нужно задавать начало массива формулой, которая будет определять Альфа или Бета
Изменено: boberchik - 11.03.2019 15:15:49
Страницы: 1
Наверх