Создание XML-файла для размещения товара на сайте “ROZETKA”

На сегодняшний день интернет-супермаркет ROZETKA стал одним из популярных ресурсов среди населения Украины. Любой желающий Интернет-магазин может размещать свой товар на сайте ROZETKA. Но прежде чем это сделать, необходимо подготовить выгрузку товара в формате XML и сформировать его на основании требований, которые предъявляет интернет-ресурс ROZETKA. Ознакомится с полным перечнем требований можно на официальном ресурсе интернет-супермаркета ROZETKA.

Один из простых способов сформировать выгрузку товара – это создать excel файл с необходимыми данными. Процесс формирования XML-файла выполняется с помощью макроса VBA.

Подготовка данных для выгрузки

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

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

В процессе работы мной был реализован Excel файл, который содержал три страницы: продукция, категория, настройки.

На странице “Продукция” в качестве столбцов были указаны параметры (как обязательные, так и дополнительные). На странице “Категория” должна быть указана категория товара, которой принадлежит продукция. Данный номер должен быть уникальным и неизменным, при условии если товар продается на вашем интернет-ресурсе.

На странице “Настройка” указана персональная информация владельца сайта, ссылка на сайт, описание сайта и кнопка генерации XML-файла.

Как создать макрос на VBA?

Разработка макроса проходила в среде Excel 2013. Для этого необходимо перейти на вкладку “Разработчик” (если вкладки нет, то включите ее в меню Файл-Параметры). На вкладке “Разработчик” нажмите на кнопку “VisualBasic”.

Далее вызовите контекстное меню на пункте “Эта книга”  (нажмите правой кнопкой мыши) и выберите команду “Insert-Module”. В появившимся окне необходимо реализовать код.

Код прост в использовании, достаточно указать необходимый номер столбца. Основная суть построения XML-файла выгрузки данных заключается в следующий строках:

Set nameCorp = XML.createElement("name") ' создание элемента с именем name
nameCorp.Text = Sheets("Настройки").Cells(2, 2).Value 'выборка данных из ячейки (2-я строка, 2-й столбец) 
shop.appendChild (nameCorp) 'добавление тега name в тег shop, который был создан ранее.

Полный код программы реализован ниже

Sub Генератор()
'создание XML-файла с параметрами сайта (вкладка Настройки)
Set XML = CreateObject("Msxml2.DOMDocument")
XML.appendChild (XML.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"))

Set yml = XML.createElement("yml_catalog")
yml.setAttribute "date", Format(Now, "yyyy-mm-dd hh:mm")
XML.appendChild (yml)

Set shop = XML.createElement("shop")
yml.appendChild (shop)

Set nameCorp = XML.createElement("name")
nameCorp.Text = Sheets("Настройки").Cells(2, 2).Value
shop.appendChild (nameCorp)

Set nameComp = XML.createElement("company")
nameComp.Text = Sheets("Настройки").Cells(4, 2).Value
shop.appendChild (nameComp)

Set urlCorp = XML.createElement("url")
urlCorp.Text = "http://site.ua"
shop.appendChild (urlCorp)

Set currencies = XML.createElement("currencies")
shop.appendChild (currencies)

Set cur = XML.createElement("currency")
cur.setAttribute "id", "UAH"
cur.setAttribute "rate", "1"
currencies.appendChild (cur)

Set cats = XML.createElement("categories")
shop.appendChild (cats)

Dim i As Integer

Dim iLastRow As Long
iLastRow = Sheets("Категория").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To iLastRow 'цикл выборки категории начиная со второй строки

Set cat = XML.createElement("category")
cat.setAttribute "id", Sheets("Категория").Cells(i, 1)
cat.Text = Sheets("Категория").Cells(i, 2)
cats.appendChild (cat)

Next i

Set offers = XML.createElement("offers")
shop.appendChild (offers)

Dim iLastRow2 As Long
iLastRow2 = Sheets("Продукция").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To iLastRow2 'цикл выборки параметров начиная со второй строки

Set offer = XML.createElement("offer")
offer.setAttribute "available", toBool("+")
offer.setAttribute "id", Sheets("Продукция").Cells(i, 13).Value
offers.appendChild (offer)

Set utlOf = XML.createElement("url")
utlOf.Text = Sheets("Продукция").Cells(i, 11).Value
offer.appendChild (utlOf)

Set Picture = XML.createElement("picture")
Picture.Text = Sheets("Продукция").Cells(i, 10).Value
offer.appendChild (Picture)

Set Price = XML.createElement("price")
Price.Text = Sheets("Продукция").Cells(i, 9).Value
offer.appendChild (Price)

Set currencyId = XML.createElement("currencyId")
currencyId.Text = "UAH"
offer.appendChild (currencyId)

Set categoryId = XML.createElement("categoryId")
categoryId.Text = Sheets("Продукция").Cells(i, 12).Value
offer.appendChild (categoryId)

Set nameTov = XML.createElement("name")
nameTov.Text = Sheets("Продукция").Cells(i, 5).Value & " " & Sheets("Продукция").Cells(i, 1).Value & " " & Sheets("Продукция").Cells(i, 6).Value
offer.appendChild (nameTov)

Set vendor = XML.createElement("vendor")
vendor.Text = Sheets("Продукция").Cells(i, 1).Value
offer.appendChild (vendor)

Set Description = XML.createElement("description")
'Description.Text = "Гала"
offer.appendChild (Description)

Set cdata = XML.createCDATASection("Description")
cdata.Data = "

" + Sheets("Продукция").Cells(i, 15).Value + "

"
Description.appendChild cdata

Set param = XML.createElement("param")
param.setAttribute "name", "Производитель"
param.Text = Sheets("Продукция").Cells(i, 1).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Назначение по типу белья"
param.Text = Sheets("Продукция").Cells(i, 2).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Вид стирки"
param.Text = Sheets("Продукция").Cells(i, 3).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "По цвету ткани"
param.Text = Sheets("Продукция").Cells(i, 4).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Тип средства"
param.Text = Sheets("Продукция").Cells(i, 5).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Объем"
param.Text = Sheets("Продукция").Cells(i, 6).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Вес"
param.Text = Sheets("Продукция").Cells(i, 7).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Страна-производитель"
param.Text = Sheets("Продукция").Cells(i, 8).Value
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Доставка/Оплата"
param.Text = "Отправка без предоплаты в день заказа или на следующий день"
offer.appendChild (param)

Set param = XML.createElement("param")
param.setAttribute "name", "Гарантия"
param.Text = Sheets("Продукция").Cells(i, 14).Value & " месяцев"
offer.appendChild (param)

Set stock_quantity = XML.createElement("stock_quantity")
stock_quantity.Text = Sheets("Продукция").Cells(i, 13).Value
offer.appendChild (stock_quantity)

Next i
XML.Save (ActiveWorkbook.Path & "\" & "gel.XML")
End Sub

Public Function toBool(symb As String) As String 'преобразование знака +/- в Да/нет
Dim result As String
Select Case symb
Case "+"
result = "true"
Case "-"
result = "false"
End Select
toBool = result
End Function

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

Для размещения кнопки перейдите во вкладку “Разработчик”, нажмите на “Вставка”, выберите кнопку и нарисуйте ее на свободном месте страницы Excel книги. Далее в появившимся окне укажите имя макроса, который был реализован ранее. Нажмите на кнопку. Рядом с файлом Excel появится XML-файл .

Полный пример проекта можно скачать ниже.

Скачать: Макрос выгрузки товара в XML-файл для ROZETKA
Скачано: 1, размер: 0, дата: 13 Окт. 2018