Заказ товара на склад

Автор ihracat, 6 декабря 2014, 20:23

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

ihracat

Здравствуйте, профессионалы и виртуозы макросов.
Подскажите, пожалуйста, как реализовать макрос для заказа товара на склад по выгрузке отчета остатка товара на складе из 1с.(см. вложенный файл. оригинала отчета под рукой нет. пришлось импровизировать)
Может кто-то уже подымал данный вопрос, поэтому заранее извиняюсь, по поиску на сайте я ничего не нашел.
Буду благодарен за наводку где рыть, а если покажет как буду благодарен по гроб.

с ув. кладовщик Саша)

П.С.

Apache Open Office 4
ОС на работе винда ХP, дома винда 7)

Aleksandr H.

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

ihracat

Я через условное форматирование сделал отрицательное число красным. Просто эти формулы раз за разом нужно прописывать вручную и протягивать в низ на  200 строк номенклатуры. Лень как известно двигатель прогресса, и подумал может с помощью макроса можно автоматизировать эти действия. Реально ли сделать так чтоб в одном столбце делалось деление, а в соседнем вычитание автоматически при условии что есть числа в столбцах с данными по общей продаже и остатке на складе?

Aleksandr H.

#3
Ну так сделай файл-шаблон, в котором уже будут формулы. По нужде, открыл файл-шаблон, сохранил под другим именем, вставил свои данные, сохранил. для F10 формула может быть "=IF(AND(C10<>"";D10<>"";E10<>"");D10/12;"")"

ihracat

Благодарю :beer:, буду пробовать.

ihracat

Дорвался до оригинального файла (см. вложение). Столбцы А-Е оригинальные данные. Вопрос такой можно ли добиться автоматического появления данных в столбцах F и G (как в образце) с помощью макроса, нажатием одной кнопки?

Aleksandr H.

#6
При условии что всегда первой ячейкой с формулами будет F10
Sub MakeMeHappy
oDoc = thisComponent
oSheet = oDoc.getCurrentController.getActiveSheet
oCursor= oSheet.createCursor
oCursor.gotoEndOfUsedArea(False)
  LastRow= oCursor.RangeAddress.EndRow
  'oSheet.GetCellByPosition(5,9).formula =
  oSheet.GetCellRangeByName("F10").formula = "=D10/12"
oSheet.GetCellRangeByName("G10").formula = "=E10-F10"
oSheet.GetCellRangeByName("G10").numberformat = 110
oRange = oSheet.getCellRangeByName("F10:G"&LastRow+1)
oRange.fillAuto(com.sun.star.sheet.FillDirection.TO_BOTTOM,1)
 
end sub

ihracat

#7
Огромное спасибо! :beer: Я просто в шоке, короче говоря вы сподвигли и вдохновили меня на изучение кодов! Я думал там строк 50 надо прописать, а все просто и изящно.
Thank you very much for Make me happy!)