Макрос для Excel или другой скрипт для редактирования XML без изменения структуры
Задача:
Есть XML-файл (выгрузка каталога товаров с сайта).
Необходимо реализовать решение, которое позволит массово обновлять данные в этом XML (цены и статусы наличия товаров) без нарушения его структуры.
Что нужно реализовать:
Скрипт / макрос / программа, которая:
открывает XML;
находит нужные товары по артикулу или другому ориентиру (аналог ВПР/VLOOKUP);
обновляет целевое значение (например, цену или наличие) в соответствии с Excel-файлом;
сохраняет результат в том же виде, не ломая структуру XML.
Решение должно быть простым в использовании (например, запуск макроса из Excel или запуск Python-скрипта двойным кликом (.exe)).
На выходе получаем готовый актуальный XML-файл, который можно положить на хостинг и раздавать по ссылке.
Желательно:
Реализация на VBA (Excel), но можно также предложить решение на Python или другом языке, если это надежнее / проще и удобнее.
Краткая инструкция по использованию.
Формат сдачи работы:
Готовый рабочий файл (Excel с макросом или скрипт).
Пример обновленного XML.
Инструкция (как обновлять данные).
Задача:
Есть XML-файл (выгрузка каталога товаров с сайта, с узлами <offer>).
Необходимо реализовать решение, которое позволит массово редактировать данные в этом XML (цены, статусы наличия, названия, описания, фото и т.д.) без нарушения структуры файла.
На выходе — обновленный XML, который можно выложить на хостинг и раздавать по ссылке.
Входные данные
XML-файл.
Один товар находится между
<offer>…</offer>.Идентификация товаров осуществляется по одному из узлов (например,
<vendorCode>), но нужна возможность вручную указывать по какому из узлов идентифицируем, то есть не всегда это должно происходить именно поvendorCode.Некоторые данные хранятся в узлах (например,
<description>,<price>), а некоторые в виде атрибутов (available="true|false"в<offer>).Есть списки узлов (например,
<picture>), которые могут содержать произвольное количество элементов (несколько фото у товара, соответственно и узлов<picture>тоже несколько).
Excel-файл с "инструкцией" для обновления.
Минимальная структура:Идентификатор (например vendorCode) Новое значение (название узла, атрибута, или указание, что обновить надо фото, для случая с фото) 12345 true 67890 false Дополнительно:
Для узлов типа
<picture>допускается указывать список значений в форматеurl1;url2;url3. Программа должна преобразовывать это в набор узлов:<picture>url1</picture>
<picture>url2</picture>
<picture>url3</picture>
Для других узлов или атрибутов — во втором столбце записывается новое значение напрямую.
Для сценария с добавлением новых узлов: во втором столбце может быть передан полный узел (например
<wholesalePrice>100</wholesalePrice>), соответственно нужно будет добавить этот узел к нужному товару.
Функционал
Решение должно обеспечивать:
Чтение XML-файла.
Поиск нужных товаров в файле по идентификатору (например, по
<vendorCode>).Обновление значений согласно Excel-таблице:
Замена атрибутов (например,
available="true/false").Замена узлов (
<price>,<description>,<name>и т.д.).Замена списковых узлов (
<picture>).Для любого сценария - достаточно полностью заменить старые данные новыми. Старые данные хранить не нужно.
Дополнительный сценарий (опционально): возможность массово добавлять новые узлы в
<offer>(например<wholesalePrice>).Сохранение результата в новый XML-файл:
Структура должна остаться неизменной.
Формат решения
Возможные варианты реализации:
Excel + VBA (макрос):
Таблица с инструкцией в Excel.
Кнопка запуска макроса, который читает XML и выполняет обновление.
Результат — новый XML-файл.
Python (или другой язык) + .exe:
Отдельный скрипт/программа, которая берет XML + Excel с инструкцией.
Запуск двойным кликом.
Результат — новый XML-файл в той же папке.
Требования к использованию
Простота запуска для не технических пользователей.
Краткая инструкция по работе:
Подготовить Excel с инструкциями (идентификатор + новое значение).
Запустить скрипт/макрос.
Получить обновленный XML.
Сценарии редактирования
Обновление атрибутов (например
available="true|false").Обновление значения в узле (например
<price>,<description>).Обновление списковых узлов (например
<picture>). Старые элементы удаляются, добавляются новые.(Опционально) Добавление новых узлов в товар.
Формат сдачи работы
Готовый рабочий файл (Excel с макросом или .exe/скрипт).
Пример обновленного XML после изменений.
Инструкция для пользователей (как запускать, как готовить Excel).
Задача:
Є XML-файл (вигрузка каталогу товарів з сайту, з вузлами <offer>).
Потрібно реалізувати рішення, яке дозволить масово редагувати дані у цьому XML (ціни, статуси наявності, назви, описи, фото, тощо) без порушення структури файлу.
На виході — оновлений XML, який можна викласти на хостинг і роздавати по посиланню.
Вхідні дані
XML-файл.
Один товар знаходиться між
<offer>…</offer>.Ідентифікація товарів здійснюється по одному з вузлів (наприклад,
<vendorCode>), але потрібна можливість вручну вказувати по якому з вузлів ідентифікуємо, тобто не завжди це має відбуватись саме поvendorCode.Деякі дані зберігаються у вузлах (наприклад,
<description>,<price>), а деякі у вигляді атрибутів (available="true|false"у<offer>).Є списки вузли (наприклад,
<picture>), які можуть містити довільну кількість елементів (декілька фото у товару, відповідно і вузлів<picture>теж декілька.
Excel-файл із "інструкцією" для оновлення.
Мінімальна структура:Ідентифікатор (наприклад vendorCode) Нове значення (назва вузла, атрибуту, чи вказівка, що оновити треба фото, для випадку з фото) 12345 true 67890 false Додатково:
Для вузлів типу
<picture>допускається вказувати список значень у форматіurl1;url2;url3. Програма має перетворювати це у набір вузлів:<picture>url1</picture>
<picture>url2</picture>
<picture>url3</picture>
Для інших вузлів або атрибутів — у другому стовпчику записується нове значення напряму.
Для сценарію з додаванням нових вузлів: у другому стовпчику може бути переданий повний вузол (наприклад
<wholesalePrice>100</wholesalePrice>), відповідно потрібно буде додати цей вузол до потрібного товару.
Функціонал
Рішення повинно забезпечувати:
Зчитування XML-файлу.
Пошук потрібних товарів у файлі за ідентифікатором (наприклад, по
<vendorCode>).Оновлення значень згідно з Excel-таблицею:
Заміна атрибутів (наприклад,
available="true/false").Заміна вузлів (
<price>,<description>,<name>і т.д.).Заміна спискових вузлів (
<picture>).Для будь-якого сценарію - достатньо повністю замінити старі дані новими. Старі дані зберігати не потрібно.
Додатковий сценарій (опціонально): можливість масово додавати нові вузли в
<offer>(наприклад<wholesalePrice>).Збереження результату у новий XML-файл:
Структура повинна залишитися незмінною.
Формат рішення
Можливі варіанти реалізації:
Excel + VBA (макрос):
Таблиця з інструкцією в Excel.
Кнопка запуску макросу, який читає XML і виконує оновлення.
Результат — новий XML-файл.
Python (або інша мова) + .exe:
Окремий скрипт/програма, яка бере XML + Excel з інструкцією.
Запуск подвійним кліком.
Результат — новий XML-файл у тій самій папці.
Вимоги до використання
Простота запуску для не технічних користувачів.
Коротка інструкція по роботі:
Підготувати Excel з інструкціями (ідентифікатор + нове значення).
Запустити скрипт/макрос.
Отримати оновлений XML.
Сценарії редагування
Оновлення атрибутів (наприклад
available="true|false").Оновлення значення у вузлі (наприклад
<price>,<description>).Оновлення спискових вузлів (наприклад
<picture>). Старі елементи видаляються, додаються нові.(Опціонально) Додавання нових вузлів у товар.
Формат здачі роботи
Готовий робочий файл (Excel з макросом або .exe/скрипт).
Приклад оновленого XML після змін.
Інструкція для користувачів (як запускати, як готувати Excel).
Отзыв заказчика о сотрудничестве с Антоном Ц.
Макрос для Excel или другой скрипт для редактирования XML без изменения структурыКачественное выполнение, лояльный подход, результатом и самим процессом сотрудничества доволен. Задача решена, все нюансы учтены. Помощь в тестировании скрипта и объяснение его функционала (как отдельно, так и в виде текстового мануала) Антон предоставил + помог учесть подводные камни, которые могли бы возникнуть в дальнейшем.
Отзыв фрилансера о сотрудничестве с Artem Prom
Макрос для Excel или другой скрипт для редактирования XML без изменения структурыЗаказчик оперативно уточнял некоторые моменты, проверял варианты реализации и успешно закрыл проект
-
Макросом на VBA очень неудобно строить структуру XML и редактировать данные, потому что для VBA XML это просто текстовый файл с отступами.
Могу реализовать на Python. У меня уже есть готовый скрипт, который формирует XML структуру для прому. Легко добавлю туда редактирование через excel.
Будет работать примерно так: запускаете скрипт, который читает XML и формирует Excel таблицу. В этой таблице меняете данные и запускаете скрипт, который эти данные поменяет в XML.
Это будет максимально простое и быстрое решение вашей задачи.
p.s. с помощью python скрипта можно автоматически обновлять цены и наличие из гугл таблицы и сразу ставить на хостинг для раздачи по ссылке. Не нужно будет вручную это делать.
-
Привет, я работал над проектом "Анализ XML для магазина" – обновил 1200 товаров, автоматизировал ценовые изменения и статус доступности, сохраняя структуру файла.
Какой формат Excel-файла вы планируете использовать для обновлений – с кодами товаров в отдельном столбце?
Предлагаю связаться, я бесплатно проконсультирую вас с технической стороны и составим план разработки + расскажу о моей команде!
-
1449 24 3 Здравствуйте.
У меня есть опыт выполнения подобных задач, поэтому я уверена, что смогу реализовать все качественно и в оговоренные сроки. Готова начать в ближайшее время. Давайте обсудим детали в личных сообщениях.
-
151 Добрый день.
Могу реализовать на VBA. Есть несколько вопросов?
1. нужен пример xml файла
2. откуда брать новые цены? тоже нужен пример.
окончательная цена и срок выполнения после обсуждения
-
669 8 0 Здравствуйте
У меня есть опыт написания подобных скриптов на Python. Я могу разработать такую программу и для вас. Предоставлю видеоинструкцию о том, как использовать программу.
-
4028 11 0 2 Здравствуйте. Технологии: lxml (корректное сохранение структуры), pandas (чтение Excel), PyInstaller (собрать в .exe).
Интерфейс: простой оконный лаунчер или консоль с подсказками (выбрать XML, Excel, колонки SKU/price/status).
Преимущества: быстро обрабатывает большие XML (десятки–сотни МБ), стабильность, легкое расширение.
-
232 1 0 Привет, Артем!
Я - Python разработчик, имею опыт работы с Excel и XML файлами.
Могу написать простой скрипт, который будет заменять необходимые вам значения, не нарушая структуру файла.
Пишите, обсудим ваш проект!
С уважением,
Андрей
-
1470 6 0 1 Мы можем сделать как .EXE файл, так и веб-решение для кроссплатформенного доступа. У нас большой опыт в подобных проектах.
-
986 12 1 Готов реализовать решение для массового обновления XML-каталога товаров.
Вариант 1 — Excel + макрос (VBA): Создаю макрос, который:
открывает XML-файл;
находит товары по артикулу (аналог VLOOKUP);
обновляет цены и статусы наличия из Excel-таблицы;
сохраняет XML без нарушения структуры.
На выходе: готовый Excel-файл с кнопкой запуска, инструкция, пример обновленного XML.
Если формат XML сложный — предложу альтернативу на Python:
скрипт, который читает Excel, обновляет XML и сохраняет результат;
… могу собрать в .exe для запуска двойным кликом.
Решение будет простое в использовании, с инструкцией для команды. Готов адаптировать под ваш формат XML.
-
2248 18 3 Добрый вечер, Артем. Занимаюсь автоматизацией на Python. Могу разработать Python скрипт и упаковать его под exe файл для ваших нужд, сделаю всё быстро и качественно. Если заинтересовало - пишите, с радостью обсудим детали.
-
3008 73 4 2 Привет! Могу написать такой скрипт, так как у меня очень большой опыт работы с ЭТ Excel (более 20 лет!!!! Обращайтесь!!!!!
-
4461 102 0 Добрый вечер. Буду рад помочь. Можете отправить пример файлов?
-
115 34 4 2 ТЗ ясно
Сделаю сегодня
Могу сделать .exe файл для виндовс или .app для макос
-
8200 381 0 1 Здравствуйте. Заинтересован вашим проектом. Готов обсудить и выполнить в виде программы (exe)
-
5883 345 0 Рассмотрю XML-файл, предложу реализацию по изменению цен/статусов
-
656 9 0 Добрый вечер, Artem!
В целом задание понятно, для точного ответа по срокам и цене хотелось бы уточнить некоторые вопросы, которые у меня возникли после анализа вашего задания.
Пишите в личные сообщения – обсудим детали и ваши пожелания.
Актуальные фриланс-проекты в категории Python
~5 микросервисов на FastAPI + правки и рефакторинг
15 719 UAH
Есть проект состоящий примерно из ~11 микросервисов на FastAPI с интеграциями, который более, чем на половину готов. Задача доделать остальные ~5 микросервисов (более конкретно - subscription/billing и интеграция с Revenuecat, abuse protection для биллинга, Notifications,… Python, Веб-программирование ∙ 4 часа 25 минут назад ∙ 22 ставки |
Power BI
700 UAH
Дашборд работает на гугл сервере, нужно перенести всю логику+код Какие нужны скиллы: развертывание etl процессов на linux сервере + работа с BigQuery и Postgre Есть рабочий код, который работает на google, где есть сама БД, нужно перенести на другой сервер, возможно переписать… Python, Базы данных и SQL ∙ 1 день 10 часов назад ∙ 15 ставок |
Телеграм-бот для найма/поиска работников. Для поиска работы
1100 UAH
1. Общая концепция Создание Telegram-бота для автоматизации подбора персонала и двустороннего поиска работы. Система работает по принципу активного отклика и взаимного подтверждения интереса (Double Opt-In). В системе предусмотрены две роли: Работодатель (Владелец фирмы) и… Python, Разработка ботов ∙ 2 дня 18 часов назад ∙ 92 ставки |
Техническая поддержка веб-платформы (Python/Django)Есть работающий веб-проект, нужно поддерживать и постепенно приводить в порядок, без переписывания с нуля. Стек проекта: Backend: Python, Django, Django Rest Framework Frontend: Next.js База данных: PostgreSQL Инфраструктура: AWS (EC2), Nginx Есть интеграции с внешними API… Python, Веб-программирование ∙ 2 дня 20 часов назад ∙ 73 ставки |
Создание приложенияЖелаю создать мобильное приложение для общения, в приложении должны быть аудио, видео звонок, создание групповых чатов, возможность синхронизировать с контактами телефона, настройками аккаунта: привязка по email, 2fa, номеру телефона, возможность настраивать уведомления… Java, Python ∙ 4 дня 19 часов назад ∙ 39 ставок |