Время на прочтение
1 мин
Количество просмотров 9.7K
Если перед вам стоит задача по автоматизации чего-нибудь в excel, то забудьте про макросы, расположенные непосредственно в книге, создавайте панель инструментов (ribbon), которая
- не зависит от конкретного файла
- располагается в основной панели инструментов
- дает кастомизируемый UI
Для того что бы создать такую панель вам потребуется
1) файл excel с расширением xlam, расположенный в %userprofile%appdataroamingmicrosoftaddins
2) редактор xml ресурса (для разметки кнопок)
3) определить кнопки по примеру
button id="b_MemberSelect" label="Member Select" onAction="p_MemberSelect" imageMso="ReturnToTaskList" size="large"
где p_MemberSelect это процедура VBA
4) в иницилазации процедуры (в файле xlam) нужно передавать предопределенные параметры
Sub p_MemberSelect(ByVal vIRibbonControl As IRibbonControl)
Но у данного решения есть одно ограничение — нет возможности создавать формы, встроенные в панели Excel, например:
Этот пример из проекта In2Sql (плагин для Excel, который визуализирует объекты SQL). В этом плагине код создан с помощью c# и библиотек VSTO.
Прикреплённая к статье надстройка содержит модуль, который может создавать панель инструментов любой сложности при запуске файла.
На панель можно добавлять как обычные кнопки, так и раскрывающиеся выпадающие списки, подменю, текстовые поля.
Формирование панели инструментов происходит при загрузке файла, при закрытии же его — созданная панель скрывается:
Private Sub Workbook_Open() ФормированиеПанелиИнструментов End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) GetCommandBar(PROJECT_NAME, True).Visible = False End Sub
Основной код модуля:
' ВНИМАНИЕ! Наличие константы PROJECT_NAME ОБЯЗАТЕЛЬНО! Public Const PROJECT_NAME = "Addin CommandBar" ' список допустимых элементов управления на пользовательской панели инструментов Public Enum CONTROL_TYPES ct_BUTTON = msoControlButton ct_TEXTBOX = msoControlEdit ct_COMBOBOX = msoControlComboBox ct_DROPDOWN = msoControlDropdown ct_POPUP = msoControlPopup End Enum Function Add_Control(ByRef Comm_Bar, ByVal ControlType As CONTROL_TYPES, ByVal B_Face As Integer, _ ByVal On_Action As String, ByVal B_Caption As String, _ Optional ByVal Button_Style As MsoButtonStyle = msoButtonIcon, _ Optional ByVal Begin_Group As Boolean = False, _ Optional Tag As String = "") As CommandBarControl ' добавляет контролы в меню Comm_Bar, возвращает ссылку на созданный пункт меню On Error Resume Next Set Add_Control = Comm_Bar.Controls.Add(Type:=ControlType, Temporary:=True) ' создаём новый контрол With Add_Control If B_Face > 0 And ControlType = ct_BUTTON Then .FaceId = B_Face ' назначаем кнопке иконку .Tag = Tag: .OnAction = On_Action: .Caption = B_Caption ' параметры контрола .BeginGroup = Begin_Group ' добавляем разделитель (при необходимости) If ControlType = ct_BUTTON Then .Style = Button_Style End With End Function
Function GetCommandBar(ByVal CommandBarName As String, Optional ByVal Clean As Boolean = False, _ Optional ByVal Position As MsoBarPosition = msoBarFloating) As CommandBar On Error Resume Next: Err.Clear ' получаем ссылку на пользовательскую панель инструментов Set GetCommandBar = Application.CommandBars(CommandBarName) If Err.Number Then ' если панель не найдена - создаём её Set GetCommandBar = Application.CommandBars.Add(CommandBarName, Position, False, True) End If If Clean Then ' перебираем на ней все элементы, и удаляем их For Each cbc In GetCommandBar.Controls: cbc.Delete: Next End If GetCommandBar.Visible = True ' отображаем панель инструментов End Function Sub УдалениеПанелиИнструментов() GetCommandBar PROJECT_NAME, True End Sub Sub ФормированиеПанелиИнструментов() On Error Resume Next: Application.ScreenUpdating = False ' получаем ссылку на пользовательскую панель инструментов Set AddinMenu = GetCommandBar(PROJECT_NAME, True) ' добавление новых элементов управления на панель Add_Control AddinMenu, ct_BUTTON, 271, "CreateBackup", "Create Backup and Save", , True Add_Control AddinMenu, ct_BUTTON, 1099, "MainMacro", "Запуск основного макроса", msoButtonIconAndCaption, True Add_Control(AddinMenu, ct_TEXTBOX, 0, "ComboChanged", "Курс EURO", , True, "EURO").Text = "Курс EURO" Add_Control(AddinMenu, ct_TEXTBOX, 0, "ComboChanged", "Курс USD", , False, "USD").Text = "Курс USD" Add_Control AddinMenu, ct_BUTTON, 395, "GetRatesFromInternet", "Получить курс с сайта Центробанка", False Dim combo As CommandBarControl ' добавляем выпадающий список Set combo = Add_Control(AddinMenu, ct_COMBOBOX, 548, "ComboChanged", "Выбор продукции", , True, "ПРОДУКЦИЯ") ' добавляем позиции (пункты) в выпадающий список For i = 1 To 10: combo.AddItem "Позиция " & i: Next i combo.Text = "выберите позицию" ' текст комбобокса по умолчанию combo.Width = 145 ' изменяем ширину выпадающего списка на панели инструментов Add_Control AddinMenu, ct_BUTTON, 280, "RenamePhotoes", "Переименование фотографий", , True Dim popup As CommandBarControl ' добавляем выпадающее меню Set popup = Add_Control(AddinMenu, ct_POPUP, 548, "", "Доп. макросы", , True) For i = 1 To 5 ' добавляем пункты в подменю popup Add_Control popup, ct_BUTTON, 70 + i, "AdditionalMacros", "Дополнительный макрос " & i, False, , CStr(i) Next i Add_Control AddinMenu, ct_BUTTON, 222, "EditWorkPlan", "Перейти к редактирования техзадания на программу", , True Add_Control AddinMenu, ct_BUTTON, 1088, "SetIsAddinAsTrue", "Скрыть листы файла программы", , True Add_Control AddinMenu, ct_BUTTON, 1087, "SetIsAddinAsFalse", "Отобразить листы файла программы", , False Add_Control AddinMenu, ct_BUTTON, 548, "ShowFormSettingsPage", "Настройки", , True End Sub
Sub SetIsAddinAsFalse() On Error Resume Next: ThisWorkbook.IsAddin = False End Sub Sub SetIsAddinAsTrue() On Error Resume Next: ThisWorkbook.IsAddin = True End Sub Sub CreateBackup() ' сохраняет файл надстройки, и создаёт резервную копию файла в специальной папке On Error Resume Next If Not ThisWorkbook.Saved Then ThisWorkbook.Save ' сохранение файла ' формируем путь к папке для резервных копий программы BackupsPath = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, PROJECT_NAME & " Backups") ' создаём папку, если она не существует MkDir BackupsPath ' формируем путь для файла резервной копии Filename = PROJECT_NAME & "_BACKUP_" & Format(Now, "DD-MM-YYYY__HH-NN-SS") & ".xls" ' создаём копию файла надстройки ThisWorkbook.SaveCopyAs BackupsPath & Filename End Sub
Sub ComboChanged() ' срабатывает при изменении значения в комбобоксе или текстбоксе On Error Resume Next НазваниеКомбобокса = Application.CommandBars.ActionControl.Tag ТекстКомбобокса = Application.CommandBars.ActionControl.Text MsgBox "Новое значение: """ & ТекстКомбобокса & """", _ vbInformation, "Изменения в полесписке """ & НазваниеКомбобокса & """" End Sub Sub AdditionalMacros() ' срабатывает при нажатии одной из кнопок в подменю On Error Resume Next НомерМакроса = Application.CommandBars.ActionControl.Tag MsgBox "Параметр макроса = """ & НомерМакроса & """", vbInformation, "Запущен макрос из подменю" End Sub
- 79481 просмотр
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
Ready to supercharge your Excel productivity? A custom toolbar can do just that.
A well-made Excel macro can perform a time-consuming task in one click, which is pretty convenient. It’s even more convenient when you construct a custom toolbar containing all your most commonly used macros.
Attaching a macro to a button is one solution, but there are times when it would be great to embed that functionality into the Excel interface. By following these steps, you can put your macros right there in the Ribbon.
Here’s how to get started on your custom toolbar.
Adding a Tab to the Ribbon
First, we’re going to add our own custom tab to the Ribbon which will house our toolbar. Right-click it and select Customize the Ribbon.
On the next screen, click New Tab.
Highlight your new tab, then click Rename. I’m going to call mine Macros, but you can choose whatever you want.
Press OK to return to the spreadsheet.
Our Macros tab has appeared, just as we were hoping. However, it’s a little bit empty at the moment.
To give it some functionality, let’s whip up a few basic macros.
Creating Macros
First, we’re going to create a very, very simple macro to get the basics down.
Creating the Time and Date Macro
First, head to the Developer tab and click Macros.
Enter the macro name dateandtime and then click Create.
Excel will open the Visual Basic editor. Add the following code:
Sub dateandtime()MsgBox NowEnd Sub
This tells Excel to present a message box to the user and to populate that message box with the current time and date, per the Now command. Save your work — remembering to save your spreadsheet as a macro-enabled file if you haven’t done so already — and head back to Excel.
Click Macros in the Developer tab once again, and this time highlight dateandtime and click Run.
You should see something like this:
Our message box macro works! Now let’s try something a little more complicated.
Open the Macros dialog once again, and this time enter the name customheaders and click Create.
Enter the following code under Sub customheaders():
Range("A1").Value = "Date"Range("B1").Value = "Title"Range("C1").Value = "Priority"Range("D1").Value = "Status"Range("E1").Value = "Finished?"
This will populate the cells in the brackets following the Range command with the corresponding text string. Of course, you can switch out the headers for whatever you want, and expand the list as necessary.
Add this line of code to the bottom:
Range("A1:E1").Font.Bold = True
This will apply bold formatting to each header. If you’ve added extra headers, make sure to adjust the cells in the brackets following the Range command.
Now, it’s time to head back to Excel and see whether our macro works as it should.
Indeed it did. This macro is handy if you’re setting up new worksheets that contain new data every week or month. Once we add this macro to our toolbar, we’ll be able to populate these headers with one click, rather than typing them out manually every time.
Now for one more macro.
Creating the Linked Spreadsheet Macro
First, create a brand new spreadsheet and save it. Then, open the document we were working with earlier and navigate to Developer > Macros. Enter the name linkedspreadsheet and click Create.
Enter the following code below Sub linkedspreadsheet():
Workbooks.Open ("C:UsersbradjDesktopMake Use OfVBA Toolbarholiday availability.xlsx")
However, you’ll need to swap out the path for the spreadsheet you just created. To find that out, navigate to the document in File Explorer, right-click it and select Properties.
This macro opens the specified workbook. I’m using a holiday availability chart that I have to reference often while looking at another spreadsheet, so it makes sense for me to have a direct link to this file on my toolbar.
Save your work and head back to Excel to test it out.
It works great. When I run the macro, the linked spreadsheet opens up straight away. Now we just need to add all these macros to our toolbar.
Open the Macros tab we created earlier and right-click the Ribbon. Select Customize the Ribbon.
Use the Choose commands from drop-down menu and select Macros.
You should see the three macros we made earlier. Highlight each one and use the Add button to insert it into a New Group under the Macros tab.
Highlight each macro and click Rename to give them a more presentable label, and add a custom icon.
Now we have a fully functional toolbar that offers instant access to those macros we created.
Everyone knows that Excel is an incredibly powerful piece of software.
It can do just about anything — and as a result, the default set-up can be a little bit overwhelming.
Excel really comes into its own when you tailor it to your own usage. If you can create a custom toolbar composed of your own specialized macros, you’re sure to be more productive. No one knows your workflow better than you do, so no one is in a better position to shave off wasted time wherever possible.
All it takes is a little knowledge of VBA, and that’s an intimidating prospect if you’re not an experienced coder. However, it’s really not as difficult as it might seem, especially if you start with the VBA basics. Pretty soon, you’ll be ready to tailor your own macros, and that’s a great skill to have if you’re serious about mastering Excel.
Do you have a tip on creating Excel macros? Are you looking for help with the process of building a toolbar? Join the conversation in the comments section below!
Image Credit: ARTIST via Shutterstock.com
Аннотация: В лекции рассматриваются окна редактора VBA: Project Window (окно проекта), Properties Window (окно свойств), Code (окно программы), а также меню и панели инструментов Visual Basic. Приводятся способы записи процедур в стандартных модулях и на процедурных листах-обработчиках событий, а также рассматриваются режимы работы с программой.
Редактор Visual Basic позволяет записывать, сохранять и модифицировать программные модули, выполнять и отлаживать процедуры.
В среду редактора VBA можно перейти
- командой Сервис-Макрос-Редактор Visual Basic,
- нажав кнопку
на панели инструментов Visual Basic
- с помощью функциональные клавишей Alt+F11.
Возврат в рабочую книгу MS Excel из редактора VBA выполняется
- командой Microsoft Excel — последней командой меню Вид,
- нажатием на кнопку
стандартной панели инструментов Visual Basic
- клавишами Alt+F11 или Alt+Q.
Запомните, что:
- Документ MS Excel представляет собой рабочую книгу, содержащую рабочие листы с данными различных типов и формулами, листы диаграмм и программы для обработки данных.
- Программные компоненты документа (модули, процедуры, формы) объединяются в проект, который сохраняется на диске вместе с документом.
- Проект на VBA нельзя создать независимо от документа. Каждой рабочей книге соответствует проект с именем, состоящим из двух частей: VBAProject и названия книги в скобках. Такое имя присваивается проекту по умолчанию
Окна редактора VB
Project Window (окно проекта)
Структура проекта видна в окне проекта редактора Visual Basic (
рис.
2.1). Основное предназначение окна проекта — обеспечение навигации в проекте.
Рис.
2.1.
Окно проекта
Структура проекта имеет вид дерева. Элементы структуры могут быть свернуты или расширены нажатием на пиктограммы «+» или «-«, расположенные слева от папок, составляющих проект.
Показать окно проекта можно при помощи:
- нажатия на кнопку
панели инструментов пиктографического меню
- команды Project Explorer меню View
- клавишей Ctrl+R.
Первоначально проект содержит только одну папку с объектами документа — Microsoft Excel Objects.
По мере разработки пользовательского приложения добавляются
- папка Формы (Forms), содержащая строки для каждой формы, созданной пользователем. Это диалоговые окна пользователя — объекты Userform.
- папка Модули (Modules) со стандартными пользовательскими модулями, не связанными с конкретными объектами или формами.
- папка Модули класса (Classes) с модулями, определяющими пользовательские классы.
- папка Ссылки (References) со ссылками на другие проекты.
Объекты, соответствующие рабочей книге, ее листам и пользовательским формам, состоят из двух компонент — видимая часть (например, непосредственно рабочий лист) и кодовая часть (процедурный лист).
На процедурном листе, связанном с объектом, размещаются процедуры обработки событий этого объекта и дополнительно могут размещаться процедуры общего типа и процедуры-функции, необходимые для выполнения событийных процедур.
Переход на процедурный лист любого объекта проекта производится следующими способами:
- двойным щелчком на выбранный объект проекта
- нажатием клавиши F7 на выделенный объект проекта
- выбором команды Code из меню View или из контекстного меню для выделенного объекта проекта.
Стандартные модули содержат:
- процедуры общего типа,
- процедуры-функции, разработанные пользователем,
- процедуры, записанные макрорекордером.
В дальнейшем будем использовать термин «модуль», имея в виду, что все сказанное распространяется на процедурный лист и на стандартный модуль, если это не оговорено особо.
В начале модуля перед процедурами могут располагаться инструкции компилятору, объявления глобальных и модульных переменных или переменных пользовательских типов.
Процедура — это последовательность команд (операторов языка), начинающаяся с оператора Sub и заканчивающаяся оператором End Sub.
Все операторы, которые заключены между этими двумя операторами, составляют тело процедуры.
После записи оператора начала процедуры вручную и нажатия клавиши Enter конец процедуры записывается автоматически.
Для вставки процедуры установите точку вставки в тело модуля и выполните команду Procedure (Процедура) из меню Insert (Вставка).
Важно:
- Любую процедуру, расположенную в стандартном модуле, можно запускать из диалогового окна Макрос, содержащего перечень доступных для запуска процедур (см.
«Использование макрорекордера. Абсолютные и относительные ссылки»рис.
1.5). - Процедуры, расположенные на процедурных листах, связанных с объектами рабочей книги или пользовательскими формами, не доступны в этом окне.
Properties Window (Окно свойств)
Окно свойств показывает и позволяет изменять свойства объекта, выделенного в окне проекта или в окне формы. Для вызова окна свойств используйте клавишу F4 или пиктограмму
Рис.
2.2.
Окно свойств объекта Module1
Если выделен стандартный модуль или проект (
рис.
2.2), то высвечивается его единственное свойство — Name (имя). Если же выделен, например, объект Userform, то в окне свойств показана таблица с перечнем его свойств.
Изменение свойства Name приводит к изменению имени объекта, под которым этот объект известен всем процедурам проекта.
Свойства объектов можно изменять в режиме конструктора ( Design time ) или в режиме выполнения процедуры ( Run time ). Некоторые свойства объектов можно изменять в любом режиме, а отдельные свойства подлежат изменению только в режиме конструктора или только в режиме выполнения процедуры. Если свойства объектов изменяются в режиме выполнения процедуры, то они никогда не видны в окне свойств объекта.
Code (окно программы)
Окно открывается при выполнении команды Code (Программа) из меню View или при нажатии клавиши F7. Можно нажать кнопку View Code(
рис.
2.2) или сделать двойной щелчок на имени модуля, объекта рабочей книги или формы.
Меню и панели инструментов Visual Basic
При переходе в редактор VB меняется меню и появляется стандартная панель инструментов Visual Basic.
Пиктограммы отладки программ расположены на отдельной панели инструментов, которая высвечивается командой View-Toolbars-Debug.
Меню
Рис.
2.3.
Меню Visual Basic
- Команды меню File (Файл) выполняют обычные действия по сохранению рабочей книги, позволяют распечатать лист с процедурами, экспортировать и импортировать модули, формы, классы, закрыть редактор VB и вернуться в таблицу.
- Команды меню Edit (Правка) служат для редактирования текста процедур (копирования, перемещения и удаления фрагментов кода, поиска и замены текста, отмены последней команды редактирования). Можно просмотреть список свойств и методов, список констант, установить закладки.
- Команды меню View (Вид) позволяют работать с панелями инструментов, просматривать объекты, переключаться на различные окна и т.д.
- Пункт Code (Программа) показывает текст модуля или процедурного листа.
- Пункт Definition (Описание) высвечивает подсказку по ключевому слову, на котором установлена точка вставки.
- Пункт Object Browser (Просмотр объектов) предназначен для просмотра объектов, их методов и свойств, доступных в разных библиотеках, модулях и пользовательских приложениях (см. Приложение A. Справочная система ).
- Пункты Immediate Window, Locals Window, Watch Window позволяют просматривать окна редактора. Эти три окна предназначены для модификации переменных и тестирования операторов, для отслеживания значений переменных, для наблюдения за ходом выполнения программы.
- Пункты Project Explorer, Properties Window позволяют перейти к окну проекта и окну свойств.
- Запуск процедур и их отладка выполняется командами, которые распределены между тремя меню: Debug (Отладка), Run (Запуск), Tools (Сервис). Подробно см.
«Средства получения справки и отладки программ»
Инструментальные средства отладки программ.- Пункты Run (Запуск программы), Break (Прервать), Reset (Сброс) служат для выполнения процедуры, для прерывания программы и внесения изменений после прерывания.
- Пошаговое выполнение процедур производится при помощи команд Step Into (Шаг с заходом), Step Over (Шаг с обходом), Step Out (Шаг с выходом). Описание команд см. в описании аналогичных кнопок панели инструментов Debug.
- Команды Toggle Breakpoint (Точка останова), Clear All Breakpoints (Снять все точки останова) используются для установки и снятия контрольных точек (точек останова). Пошаговое выполнение неизбежно приводит к потере времени выполнения процедур. Контрольные точки позволяют уменьшить время пошагового выполнения кода. При достижении контрольной точки программа переходит в режим отладки и можно просмотреть значения переменных или сделать дополнительные вычисления.
- Команды Add Watch (Добавить контрольное значение), Edit Watch (Изменить контрольное значение) дают возможность просматривать значения переменных или выражений, редактировать отслеживаемые выражения. В процессе выполнения программы значения высвечиваются в окне контрольных значений ( Watches ).
- Команда Quick Watch (Установить контрольное значение) позволяет узнать значение переменной или выражения после прерывания программы.
- В меню Tools (Сервис) находятся инструменты VB. Команды этого меню отличаются от команд аналогичного меню для табличного листа.
- Команда Macros (Макросы) вызывает диалог запуска макроса (см.
рис.
1.5). Для табличного листа эквивалентная ей команда Макрос разворачивает дополнительный список команд, которые используются для макрорекордера и были подробно разобраны выше. - Команда Ссылки (References) служит для связи текущего проекта с другими проектами или библиотеками.
- Команда Macros (Макросы) вызывает диалог запуска макроса (см.
- Меню Window (Окно) позволяет открыть новое окно, упорядочить открытые окна, разделить активное окно.
- Меню Help (Справка) — вызов справочной информации. Используется для запуска справочной системы MS Excel Visual Basic.
Рис.
2.4.
Разделы помощиПри выборе этого пункта доступны разделы помощи (
рис.
2.4), сгруппированные в трех книгах. Подробно см.
«Средства получения справки и отладки программ»
. Справочная система.
Панели инструментов
Стандартная панель инструментов
Рис.
2.5.
Стандартная панель инструментов Visual Basic
|
View Microsoft Excel — переход на активный лист рабочей книги; |
|
Insert Userform — вставка объекта Userform (форма); |
Нажатие на стрелку вниз справа от пиктограммы высвечивает дополнительное меню (
рис.
2.6), в котором можно выбрать вставляемый объект: модуль, процедуру или класс;
Рис.
2.6.
Дополнительное меню
|
Run Macro запускает процедуру, внутри которой установлена точка вставки. Если точка вставка вне процедур или лист с процедурами неактивен, то предлагается выбрать запускаемую процедуру из меню; |
|
Break Macro приостанавливает работу процедуры или продолжает ее после сделанной паузы; |
|
Stop Macro прерывает выполнение процедуры; |
|
Design Mode — вход/выход из режима Конструктора; |
|
Project Explorer открывает окно проекта; |
|
Properties Window открывает окно свойств текущего объекта; |
|
Object Browser — просмотр объектов; |
|
Toolbox высвечивает панель элементов управления форм. |
Остальные пиктограммы имеют стандартное предназначение.
Панель инструментов отладки
Рис.
2.7.
Панель отладки (Debug)
|
Design Mode — вход/выход из режима Конструктора; |
|
Toggle Breakpoint — установка контрольной точки; |
|
Step Into — переход на следующую команду текущей и вызываемой процедур; |
|
Step Over — переход на следующую команду текущей процедуры без пошагового выполнения вызываемых процедур. Вызванные процедуры и функции выполняются целиком без остановов на командах; |
|
Step Out — выход из вызванной процедуры и переход к следующей команде исходной процедуры; |
|
высвечивание на экране окон редактора ( Locals, Immediate, Watches ). |
|
Quick Watch — высвечивание окна значений отслеживаемой переменной; |
|
Call Stack — высвечивание структуры вызовов процедур (стек процедур). |
ТРЕНИНГИ
Быстрый старт
Расширенный Excel
Мастер Формул
Прогнозирование
Визуализация
Макросы на VBA
КНИГИ
Готовые решения
Мастер Формул
Скульптор данных
ВИДЕОУРОКИ
Бизнес-анализ
Выпадающие списки
Даты и время
Диаграммы
Диапазоны
Дубликаты
Защита данных
Интернет, email
Книги, листы
Макросы
Сводные таблицы
Текст
Форматирование
Функции
Всякое
Коротко
Подробно
Версии
Вопрос-Ответ
Скачать
Купить
ПРОЕКТЫ
ОНЛАЙН-КУРСЫ
ФОРУМ
Excel
Работа
PLEX
© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
Техническая поддержка сайта
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |