Помогите написать макрос обработки прайса.

Автор ink-service, 15 февраля 2018, 16:47

0 Пользователи и 1 гость просматривают эту тему.

ink-service

Всем доброго дня.
Ищу кто может за плату написать макрос обработки прайса, или с энтузиазмом помочь реализовать мне это:
Программкой создается прайс лист, но вид его обчный банальный. Его нужно с помощью макроса обработать придать вид более мене удобный. Расширить колонки, выделить заголовки, добавить фильтр по колонкам, написать заголовок и т.п.  и сохранить его в папке.

economist

Для начала попробуйте макрорекордером записать все действия и применить записанный  макрос на "сырой" прайс.

Если речь о LibreOffice Calc - то можно записать макрос в MS Excel (там макрорекордер намного точнее и не такой "болтливый") - и вставить полученный код макроса в Calc, в модуль, вверху которого добавить две строки:

Option VBASupport 1
Option Compatible

Этот может оказаться даже эффективнее, чем запись в Калке.  
Ну и если что-то "не записалось" - можно дописать ручками.

Но я бы на вашем месте ничего этого не делал. А взял бы сделал на втором пустом листе
формулу =Прайс.A1, ссылающуюся на "сырую" ячейку прайса на листе, растянул на весь лист. И отформатировал всё, как надо, включил бы фильтр. Нужны подзаголовки - вставьте строку (хотя это должна делать "основная" программа). И никаких макросов.

Также можно сделать это все в отдельном ODS-файле, который будет обновляться при открытии.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ink-service

Спасибо за ответ..
Во втором предложенном варианте, как тут осуществить тогда так чтобы это все работало автоматически.
Алгоритм такой:
Программой учета (не 1С) создается файлик (причем формат можно задать любой XLSX, CSV, XML, ODS) - выгружается этот файлик в папку - после выгрузки запускается программа обработки, приведения его в нужный вид - закрывается, сохраняется файл в итоге в формате XLSX (или XLS).

economist

#3
Ну, давайте попробуем. Не исключено что это первый в РФ случай использования данного способа (и он не единственный).  

1) сохраняете свой CSV, разделитель полей самый лучший - табуляция (в 1С так и есть для формата TXT)

2) В Calс - Лист - Вставить лист из файла - поставить флаг Связь с файлом - Обзор... - выбрать CSV/TXT, разделитель Табуляция или какой есть, проверить читаемость и есичо выбрать кодировку.

3) На соседнем листе Прайс написать формулу и протянуть её на нужный диапазон. Чтобы не было нулей - их можно "не показывать" в настройках (см. вложенный фай)

4) Отформатируйте лист Прайс как надо. Можно делать почти все - заливку, шрифт, выравнивание, форматы, автофильтр итп.
Нельзя (но если подумать - можно) вставлять строки, бездумно объединять ячейки итп. Начните сами и дальше догадаетесь.

Данные из CSV будут считываться при открытии файла ODS (будет запрос). Это можно делать и автоматом.

Пример я приложил, сохраните на диск D: в корень оба файла, откройте ODS.
CSV можно, кстати, обновлять и исправлять прямо на ходу, даже вручную.
Переоткрытие ODS - тут же обновит данные на листе 123. А остальное за вас сделает Calc своими формулами.
Автофильтр (включенный) - нужно передернуть ручками, чтобы он сработал но это скорее всего и нужно.  

Связь поддерживается только с файлом формата ODS. В xls сохраняйте сами, копию, ту что отсылать клиентам.
     
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ink-service

Тут все понятно. Но, как мне сделать  это все так чтобы это работало без участия пользователя?, например через планировщик (тут конечно не проблема). Например в  10 вечера запустилось все создалось и положилось в папку. Потом этот полученный прайс красивый в XLSX отправляется по почте клиентам (или выгружается на FTP).

economist

#5
Если, скажем, речь об 1С7/8 - то в ней, обработкой, по расписанию, - формируйте Прайс с нужными форматами, и отправляйте прайс прямо сервером 1С. Цена данного функционала - примерно 30 тыс. руб., если хорошо поискать фрилансеров. В Москве 50+. Или можете пообещать премию вдвое меньше штатному айтишнику. Только дайте месяц-два.

И вообще, не морочьте людям голову с табличным форматом прайса, OpenOffice|LibreOffice здесь лишне звено, раз все "автоматическое" и можно делать в 10 вечера :-) То что вы написали с формированием неизвестной "программкой" и отправкой - без макроса/скрипта в Calc или "снаружи" - не сделать.

Та же 1С умеет выгружать прайсы в де-факто международном стандарте CommercеML. Он загружается в учетную программу и вы видите документы (прайсы, накладные, с/ф, УПД-шки - итд-шки) поставщика/покупателя - в вашей или их номенклатуре (на выбор). Вот это настоящая, "деловая" Красота прайса, а не цветные клеточки и автофильтр.

Либо пишете на веб-сайте/1С кабинет клиента и даете ему доступ к своей базе цен и остатков.  

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

bigor

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

ink-service

Нет, у меня не 1С!!  я уже писал выше.!   Не важно даже что у меня, есть итоговый просто файл CSV (или могу получить  любой XLSX, CSV, XML, ODS).. Его же не положишь на FTP для скачивания клиентам,  ну не читабельный он  для обычных клиентов, даже если он просто ЭКСЕЛЬ,  там по колонкам уже раскидано все но не "красиво", кучей, без выделеных заголовков, фильтров..  Клиенту нужно дать готовый прайс.
Операционка WinServer R2 2008..  в принципе можно делать и на отдельном компе в сети  операционка Win7

economist

Если так сложно назвать программу, в которой формируется прайс, - тогда мой вариант с формульным форматированием + макрос вам подойдет.

Или даже без макроса: создать в почтовом клиенте список рассылки на 200 покупателей в виде ОДНОГО адреса, открыть Calc, ответить "Обновить", убедиться глазами что все ОК, нажать Файл - Отправить - Документ элпочтой - вести адрес рассылки - Enter - займет 1 минуту в день. 220 минут в год, даже 4 часов не наберется.

Это не те трудозатраты, которые стоит автоматизировать макросом, потратив на его составление 3 дня. 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ink-service

Да нет не сложно назвать. Memo4x4.   просто смысл,  речь то идет о готовом файле уже, не важно как он получается.
Рассылку так и делаем ручками.. Но Это зависимость от персонала, он то забыл. то заболел, то еще какая оказия - не без этого..
а Машина  - это надежно, работа то "обезьянья" )))..   просто автоматизировать это)

bigor

Выкладывай образец и то что нужно получить
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

alexnak

Мы пользуемся утилитой для обработки прайсов. В виде XLS или CSV файлов.
Прайсы принимаются, обрабатываются и рассылаются(если надо)
Или нужен именно скрипт VBA?

ink-service

а что за утилитка?? поделитесь названием? платная?

economist

http://memo4x4.com/ml4x4.html позволяет нарисовать прайс из БД вашей программы
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...