mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

Нужна аналогичная программа (надстройка, макрос) для Excel?

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

Обработка таблицы тарифов, и её выгрузка (экспорт) в XML

Результат преобразования массива функцией ExtendArray

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

Присутствует опция выгрузки обработанной таблицы в файл формата XML.

При запуске программы (которая выполнена в виде надстройки Excel) формируется дополнительная панель инструментов:

панель инструментов надстройки экспорта в XML

Формируемый надстройкой XML-файл имеет такую структуру:

Созданный XML файл

ВложениеРазмерЗагрузкиПоследняя загрузка
XML addin.xla87.5 КБ3221 неделя 1 день назад

Комментарии

Этот макрос «заточен» под конкретный файл (таблицу) заказчика.
При нажатии кнопки «экспорт в XML» программа формирует файл XML по открытой таблице Excel,
и выдает сообщение только в том случае, если выгрузка прошла без ошибок.

Код макроса, запускающегося при нажатии этой кнопки:

Sub XMLExport()
    'strH = "http://www.w3.org/2001/XMLSchema-instance"
    On Error Resume Next: Err.Clear
 
    Dim Заголовок As Range, Данные As Range
    ' диапазон заголовка таблицы - с ячейки A1 до последней заполненной ячейки в первой строке
    Set Заголовок = Range(Range("a1"), Cells(1, Columns.Count).End(xlToLeft))
    ' диапазон данных таблицы - с ячейки A2 до последней заполненной ячейки в столбце A,
    ' расширенный до количества столбцов заголовка таблицы
    Set Данные = Range([A2], Range("A" & Rows.Count).End(xlUp)).Resize(, Заголовок.Columns.Count)
 
    arrHeaders = Application.Transpose(Application.Transpose(Заголовок.Value))
    ПутьКФайлуXML = ThisWorkbook.Path & "\res.xml"
 
    arr = Данные.Value
    For i = LBound(arr) To UBound(arr)
        arr(i, 4) = Replace(Format(arr(i, 4), "0.0000"), ",", ".")
        arr(i, 6) = Format(arr(i, 6), "YYYY-MM-DD")
    Next i
 
    Array2XML(arr, arrHeaders, "Root").Save ПутьКФайлуXML
    If Err.Number = 0 Then
        MsgBox "Таблица экспортирована в файл" & vbNewLine & ПутьКФайлуXML, vbInformation, "Готово"
    End If
End Sub

Это не универсальный макрос, - не думайте, что нажмете кнопку, и он сделает то, что вам надо.
Это опубликовано просто как пример одной из моих работ.
Можете сами поразбираться в коде, переделав его под свои нужды (пароль на макросы: 1)
Или же можете заказать подобную надстройку под свои нужды.

У меня кнопка "Выгрузка в XML" никак не реагирует на нажатие, не подскажите в чем может быть проблема?

Понял, спасибо за пояснения. До серьёзного заказа я пока ещё не дорос, только недавно начал заниматься темой биллинга, если по мере углубления в тему возникнут потребности в помощи специалиста по Excel VBA, буду знать, к кому обращаться! (не бесплатно, разумеется)

Надстройка рассматривает записи *-* как диапазоны "число-число".
Соответственно, 03 превращается в 3, а 07 - в 7.

Работа с диапазонами как с текстом не предусмотрена (тут очень сложным алгоритм получится)
Сами подумайте, вот встретится в ячейке «текстовый» диапазон "в5-lks" - как его должна интерпретировать программа?

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

Заметил небольшой недостаток в работе надстройки.
В поле ROLLUP был диапазон 03-07.
Нули в данном случае являются неотъемлемой информацией,
поскольку являются частью телефонного номера.
Мало того, что Excel приняла этот диапазон за "3 июля"
(пришлось насильно присваивать текстовый формат),
но и в итоговой таблице эти нули пропали.
Впрочем, вполне возможно, что это не надстройка виновата,
а слишком "умная" Excel решила, что нулям перед числами не место.
Ещё раз спасибо за полезную программу, продолжаю осваивать.

Спасибо, думаю, эта надстройка облегчит мне жизнь ;)
Вымпелком присылает новые тарифы как на картинке слева, да ещё в PDF формате.
Начальник распечатывает и выдаёт мне для заполнения базы данных с тарифами.
Приходится прикладывать к распечатке линейку, чтобы не сбиться
и цифра за цифрой вбивать нужную информацию в нужное место базы.
Процедура эта отнимает очень много времени, а потом приходят
новые тарифы и всё приходится повторять заново :(
Теперь осталось найти хороший конвертер PDF to Excel и работа пойдёт веселее ;)

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  _       ____                         __  __ 
| |__ |___ \ _ __ ____ _ __ | \/ |
| '_ \ __) | | '__| |_ / | '_ \ | |\/| |
| |_) | / __/ | | / / | |_) | | | | |
|_.__/ |_____| |_| /___| | .__/ |_| |_|
|_|
Введите код, изображенный в стиле ASCII-арт.