Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

Открыть новую тему     Написать ответ в эту тему

exMIB



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
 
Обсуждаем вопросы только по Word VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Word, не относящиеся к программированию, задаем в теме Microsoft Word

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Рекомендации:
Если у Вас есть проблема, не решаемая стандартными средствами Word (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Word (на вкладке Разработчик - Запись Макросов). Подробнее здесь. В большинстве случаев получившийся код (Разработчик-Макросы-Макрос-Изменить или Разработчик-Visual Basic) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроенная помощь (F1), естественно.
 
Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылезает ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

 
Рекомендуется к прочтению:
  • Начало работы с VBA в Word 2010
  • Microsoft Visual Basic for Application. Осетрова И.С., Осипов Н. А. Учебное пособие (руководство по программированию на VBA в MS Office)  
  • Введение в VBA для приложений MS OFFICE
  • Word и его объекты. Лекция из курса «Основы офисного программирования и документы Word»
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Справка по VBA
  • Microsoft Word Visual Basic Reference - руководство по VBA (eng.)
  • Справочник по Word VBA
  • Блог Александра Гуревича  - тематический блог: советы по работе с Word и Excel и прочие материалы
  • Форум по VBA, Excel и Word Макросы в Word -тематический форум, готовые решения
  • Список полезной литературы по Word и программированию на VBA
  • Подборка решений на VBA для Word  
     
     
  • Excel VBA все вопросы по Excel VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы/готовые решения:
  • функция возвращает список закладок в документ
     
    Перечень основных ColorIndex'ов из MSDN
     
    - стартовый вопрос топика...

    Смежные темы:
    Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
    Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
    Программы » Word FAQ | Excel FAQ | Access FAQ
    Прикладное программирование » Excel VBA | Access VBA  
    Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
    Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
    Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
    Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007

  • Всего записей: 3329 | Зарегистр. 27-09-2001 | Отправлено: 03:05 01-06-2005 | Исправлено: ALeXkRU, 17:10 03-08-2021
    Brainiacs

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А вот и решение по этому вопросу:
     

    Цитата:
    Option Explicit
     
    Const wdDialogToolsTemplates = &H57
     
    Dim strDocumentList
    Dim strBadTemplate
    Dim strDocument
    Dim strTemplate
     
    Dim objFSO
    Dim objWord
     
     
    strDocumentList = "E:\Песочница\0120\DocumentList.txt"
    strBadTemplate = "\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot"
     
     
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
     
    If objFSO.FileExists(strDocumentList) Then
    Set objWord = WScript.CreateObject("Word.Application")
     
    With objFSO.OpenTextFile(strDocumentList)
    Do Until .AtEndOfStream
    strDocument = .ReadLine()
     
    If objFSO.FileExists(strDocument) Then
    WScript.Echo strDocument
     
    With objWord.Documents.Open(strDocument)
    strTemplate = objWord.Dialogs(wdDialogToolsTemplates).Template
     
    If strTemplate = strBadTemplate Then
    WScript.Echo " Template found in document [" & strDocument & "]"
     
    .AttachedTemplate = "Normal.dotm"
    .Save
    End If
     
    .Close
    End With
    Else
    WScript.Echo "Document [" & strDocument & "] not found"
    End If
    Loop
     
    .Close
    End With
     
    objWord.Quit
     
    Set objWord = Nothing
    Else
    WScript.Echo "Document list [" & strDocumentList & "] not found"
    End If
     
    Set objFSO = Nothing
     
    WScript.Quit 0

     
    Большущее спасибо Petya V4sechkin и alexii aka Iska aka хорошие люди))

    Всего записей: 19 | Зарегистр. 03-10-2007 | Отправлено: 16:56 24-02-2012 | Исправлено: Brainiacs, 17:15 24-02-2012
    Prent

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, помогите пожалуйста, если это возможно.
     
    Мне нужно получить из текста вида:

    Код:
     
    Страна_1 | Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Уралл | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Средничкин | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Городищестройдом | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Городищестройдом | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Край | доп.параметры к тексту | доп.параметры к тексту
     
    Страна_2 | Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Страна_2 | Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Страна_2 | Край | доп.параметры к тексту | доп.параметры к тексту
    Страна_2 | Среднегорск | доп.параметры к тексту | доп.параметры к тексту
     
     
    Страна_3 | Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Уралл | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Средничкин | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Городищестройдом | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Страна_2 | Край | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Городищестройдом | доп.параметры к тексту | доп.параметры к тексту
    Страна_2 | Край | доп.параметры к тексту | доп.параметры к тексту
    Страна_1 | Уралл | доп.параметры к тексту | доп.параметры к тексту
    Страна_3 | Среднегорск | доп.параметры к тексту | доп.параметры к тексту

     
    Нормальный отсортированный список, вида:

    Код:
     
    В тексте есть: Страна_1, Страна_2, Страна_3
     
     
    Страна_1
     
    Край | доп.параметры к тексту | доп.параметры к тексту
    Край | доп.параметры к тексту | доп.параметры к тексту
    Край | доп.параметры к тексту | доп.параметры к тексту
    Уралл | доп.параметры к тексту | доп.параметры к тексту
    Уралл | доп.параметры к тексту | доп.параметры к тексту
    Уралл | доп.параметры к тексту | доп.параметры к тексту
    Уралл | доп.параметры к тексту | доп.параметры к тексту
    Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Средничкин | доп.параметры к тексту | доп.параметры к тексту
    Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Городищестройдом | доп.параметры к тексту | доп.параметры к тексту
    Городищестройдом | доп.параметры к тексту | доп.параметры к тексту
     
    Страна_2
     
    Край | доп.параметры к тексту | доп.параметры к тексту
    Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
     
     
    Страна_3
     
    Край | доп.параметры к тексту | доп.параметры к тексту
    Край | доп.параметры к тексту | доп.параметры к тексту
    Уралл | доп.параметры к тексту | доп.параметры к тексту
    Уралл | доп.параметры к тексту | доп.параметры к тексту
    Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Ломовой | доп.параметры к тексту | доп.параметры к тексту
    Средничкин | доп.параметры к тексту | доп.параметры к тексту
    Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Среднегорск | доп.параметры к тексту | доп.параметры к тексту
    Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Новоалексеевка | доп.параметры к тексту | доп.параметры к тексту
    Городищестройдом | доп.параметры к тексту | доп.параметры к тексту
    Городищестройдом | доп.параметры к тексту | доп.параметры к тексту

     
    Т.е. мне нужно:
     
    1. Если в тексте есть "Страна_N" - то добавить название этой страны в перечисление "В тексте есть:"
    2. Название "Страна_N", указанное в начале каждой строки, поместить в начало каждого блока
    3. С остальных строк "Страна_N |"  - удалить
    4. Произвести сортировку строк исходя из длинны названия региона при этом, одинаковые названия регионов, чтоб были друг за другом
     
     
    В принципе всё. Сам в программировании ниже нуля, так что самому "доехать" сложно...

    Всего записей: 1 | Зарегистр. 08-12-2005 | Отправлено: 20:06 26-02-2012 | Исправлено: Prent, 20:06 26-02-2012
    panda3

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нафига это делать в Worde? Вот тебе скриптик, который преобразует текстовый файл в нужный формат:

    Код:
     
    var FSO = WScript.CreateObject("Scripting.FileSystemObject");
    var fName = WScript.Arguments(0);
    var f = FSO.OpenTextFile(fName, 1);
    var fw = FSO.OpenTextFile(fName +".new", 2, true);
     
    var countries = {};
     
    for (var i = 0; !f.AtEndOfStream; i++)
    {
        var s = f.ReadLine();
        if ( s.length == 0 )
            continue;
        s.match(/(.*?)\s*\|\s*(.*?)\s*(\|.*)/);
        if (!countries[RegExp.$1])
            countries[RegExp.$1] = [];
        countries[RegExp.$1].push([RegExp.$2, RegExp.$3]);
    }
    f.Close();
     
    var arr = [];
    for (i in countries)
    {
        i = new String(i);
        i.arr = countries[i];
        arr.push(i);
    }
    arr.sort();
    fw.WriteLine("В тексте есть: " + arr.join(", "));
    for (i = 0; i < arr.length; i++)
    {
        fw.WriteLine("\n" + arr[i] + "\n");
        var in_arr = arr[i].arr;
        in_arr.sort(function($1, $2) {
            $1 = $1[0]; $2 = $2[0];
            if ($1.length != $2.length)
                return $1.length - $2.length;
            if ($1 < $2) return -1;
            if ($1 > $2) return 1;
            return 0;
        });
        for (var j = 0; j < in_arr.length; j++)
            fw.WriteLine(in_arr[j].join(" "));
    }
    fw.Close();
     

    Всего записей: 206 | Зарегистр. 06-02-2007 | Отправлено: 13:14 27-02-2012
    yozhic



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста. Есть UserForm, после нажатия на кнопку выполняется макрос и фокус остается на форме. Какой командой перенести фокус на документ?

    Всего записей: 2945 | Зарегистр. 20-03-2008 | Отправлено: 00:23 02-03-2012
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yozhic
    Вызывать форму MyFrom.Show vbModeless
    То есть не модально

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 02:35 02-03-2012
    yozhic



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    Спасибо. Я невнятно задал вопрос. Я искал вот это: Application.Activate (уже нашел :)

    Всего записей: 2945 | Зарегистр. 20-03-2008 | Отправлено: 10:32 02-03-2012
    Marlenx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подробнее... [/more]

    Всего записей: 1 | Зарегистр. 01-04-2012 | Отправлено: 22:48 01-04-2012 | Исправлено: Marlenx, 22:49 01-04-2012
    Alexey87

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста как должен выглядеть код макроса, который сможет реализовать выбор значений из полей со списком (элементы ActiveX), находящихся в таблице (таблицу задействовал как автотекст)
    или как по другому реализовать выбор данных через автотекст?
     
    при вставке автотекста в полях со списком ничего не выбирается (2 поля, Word 2003)

    Всего записей: 678 | Зарегистр. 27-01-2008 | Отправлено: 20:08 07-05-2012
    life_so_good



    Оптимист
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли как-то обработать пример, средствами VB с целью превращения его в документ excel ?  
     
    Пример сокращен до нескольких строк, в реалии их может быть несколько сотен или более...  
     
    Сам пример

    Всего записей: 1337 | Зарегистр. 30-04-2002 | Отправлено: 16:28 11-05-2012
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    life_so_good
    Интересно, откуда такой изврат получается?
    Может легче просто преобразовать (распечатать) в картинку и распознать finereader`ом?

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 01:40 12-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gena1971  
    Изврат  
    +1
     
    life_so_good
    Покажи оригинальный материал (кусок), а не модель.  
    А если это и есть оригинал, то лечить надо на стадии зачатия - выбрать нужный подоконник в подъезде. Щаз уже поздняк. И неинтересно, увы... Через OCR (Gena1971 +1) и то веселее.

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 01:57 12-05-2012
    life_so_good



    Оптимист
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    grbdv
    Gena1971
    парни, это и есть оригинал, sap рожает через скан то это понятно... думал мб есть иной путь

    Всего записей: 1337 | Зарегистр. 30-04-2002 | Отправлено: 09:07 12-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    life_so_good
    Грустно. Попробуй пошукай в контексте "парсер для rtf", "структура rtf". Может дешевле и эффективнее rtf, как текстовый файл распарсить? В этой теме про VB может спросить... Веб-программеры должны, по идее, часто с подобными задачами сталкиваться.
     
    Добавлено:
    life_so_good
    Вот, взгляни
    Это экселевский файл. Надо его положить в одну папочку вместе с primer.rtf
    В редакторе VBA надо подключить библиотеку Word:
    Alt+F11, Tools - Refernces - в списке найти 'Microsoft Word 11.0 Object Library' и поставить галку.
    Зайти в Module1, встать внутрь процедуры sb_rtf2xls и нажать F5.
     
    Я объектную модель Word почти не знаю, поэтому не справился с явным выделением текста из рамки. Сделал тупо в лоб - копи-пасте. Из-за этого получаются накладки в ячейках, где присутствуют табуляции. Вобщем, надо, чтобы кто-то, хорошо знающий Ворд подключился.
     

    Код:
    Sub sb_rtf2xls()
    Dim wrd As Object, frm As Frame, dcm As Document, rng As Range
    Dim lCol&, lCC&, lRR&
    Dim sPathName$
         
        Cells.Clear                 ' clear sheet content
         
        sPathName = ThisWorkbook.Path & "\" & "primer.rtf"
        lCol = 8                    ' set columns qty
         
        Set wrd = CreateObject("Word.Application")
        wrd.Visible = True
        Set dcm = wrd.Documents.Open(sPathName)
         
        lRR = 0: lCC = 1
        For Each frm In dcm.Frames
            If lCC = 1 Then
                lRR = lRR + 1
                lCC = lCol + 1
            End If
            lCC = lCC - 1
            frm.Copy
            Cells(lRR, lCC).PasteSpecial (xlPasteValues)
        Next
        Set wrd = Nothing
    End Sub

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 13:54 12-05-2012 | Исправлено: grbdv, 15:19 12-05-2012
    GreatWorm



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как -    
    1. Заменить все строки начинающиеся с определенного слова? Нужно очистить текст с форума от мусора.  
    То есть -  
    Vasya66 -  October 17, 2011, 09:26:09 pm  
    blabla blablablablablablablablablablablabla  
     
    JoX -  October 17, 2011, 09:29:07 pm  
    blablablablablablablablablablablablablabla  
     
    На -  
     
    Vasya66  
    blabla blablablablablablablablablablablabla  
     
    JoX  
    blablablablablablablablablablablablablabla  

    Всего записей: 120 | Зарегистр. 14-01-2007 | Отправлено: 16:00 17-05-2012
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GreatWorm
    Подумал немного, можно заменой попробовать (надо включить подстановочные знаки)
    Сначала в поле найти вставить строку (без кавычек)
    "^0032-^0032^0032[ADFJMNOS][a-z]@[ehlry]^0032[0-9]{2},^0032[0-9]{4},^0032[0-9]{2}:"
    в поле заменить
    "000дата000" - (к примеру)
    И произвести полную замену
    Потом вторым заходом в поле найти (без кавычек)
    "000дата000[0-9]{2}:[0-9]{2}^0032[ap]m"
    заменить - очистить.
    И снова полная замена.
    За раз не получилось, слишком длинное выражение получается.
    Это точно для приведенного примера, пробелы имеют значение.
    Вроде как то так.
    ------
    Подправил немного

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 17:37 17-05-2012 | Исправлено: Gena1971, 17:41 17-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GreatWorm
    Исходник ведь текстовый файл? Подгрузить библиотеку VBScript и читать исходный файл построчно. Искать первое вхождение "-" с начала строки, проверять его на обрамление одним пробелом слева и двумя справа. Если в никах тоже могут быть дефисы, то в с таком случае искать следующее вхождение. Считать от начала строки до позиции дефиса - 2. Записать в целевой файл. Экспортировать его в ворд. Можно и сразу в ворд писать.

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 18:02 17-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GreatWorm
    Бзв, в смежной теме по Екселю есть отчаянные поклонники регэкспа, они, думаю, смогут и в одно движение руки смогут записать... Или даже в полдвижения :)

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 20:17 17-05-2012
    Alexey87

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    все еще нуждаюсь в решении вопроса

    Всего записей: 678 | Зарегистр. 27-01-2008 | Отправлено: 23:02 18-05-2012
    manhattan 22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    здравствуйте.
    помогите пожалуйста с такой проблемой:
     
    есть два вордовских файла с цифрами.  
    в одном должны быть применены российский региональные параметры (разделитель целой и дробной части "," и разделитель групп разрядов " ").
    во втором файле - английские параметры (разделитель целой и дробной части "." и разделитель групп разрядов ",").
     
    сейчас я каждый раз вручную переключаю рег. параметры через панель управления.
     
    подозреваю, что можно написать макрос на Document_Open, чтобы к английскому файлу были пременены нужные региональные параметры. то есть в системе будут русские настройки, а в отдельном файле английские.

    Всего записей: 21 | Зарегистр. 23-05-2012 | Отправлено: 14:02 23-05-2012
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    manhattan 22
    А эти файлы точно вордовские? Ворд только с текстом оперирует. И если в нем стоят запятые, то они там должны остаться и при смене региональных настроек. Может все таки exel?

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 15:13 23-05-2012
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru