149

О пользе продвинутого знания Ёкселя и о программировании

Надо внести в онлайновую базу, по работе, 180 записей. Каждая из 15 полей. Обычно мы это делали через CTRL+C/CTRL+V из Ёкселя, куда данные вбивались заранее. Т.к. обычно вносилась одна запись в неделю-две, редко больше.- А тут целых 180, причём надо, как обычно, "вчера".

- В базе имеется возможность импорта (через офлайновый конвертер в XML), но только из CSV и по очень строгим правилам: регистр, разделители, дополнительные поля с UUID, разными для разных случаев, которых нет в нашем исходном файле, плюс порядок столбцов совершенно другой и куча дополнительных полей (пустых или с константами).

===

Где-то минут за 40 неспешной и творческой работы наваял простенький конвертер, не выходя из Ёкселя:

- страница с настройками и константами

- страница, куда копипастится блок из рабочего файла Ёкселя, который надо экспортнуть

- страница с результатами, которая тупо сохраняется в CSV.

На этой последней странице - все данные вставляются формулами и ссылками на первые две. Причём для разных типов записей подставляются необходимые константы, меняется регистр, где критично, даты перегоняются в текст (т.к. Ёксель при сохранении делает их числами) и т.п. Простых ссылок на ячейку практически нет.

===

Затем за пару прогонов через утилиту перегнал в XML, подписал ЭЦП и загнал на сайт. Ошибок: 0.

- Это заняло у меня ещё минут 15, вместе с проверкой исходных данных и результата, подписью ЭЦП и проверки, что всё успешно залилось и открывается онлайн.

===

Стал считать, сколько набивал бы вручную. Я работаю практически только с клавы, поэтому на копипаст 1 поля уходит, пускай, 1 секунда.

- Т.е. CTRL+C ALT+TAB CTRL-V TAB ALT-TAB Right... и так много раз подряд.

- Это 15*180=2700 секунд или 45 минут непрерывной, неотрывной работы.

- Это без учёта необходимости кликнуть в браузере "Добавить запись" и в конце "Сохранить" и промотать колонки в Ёкселе, т.к. их порядок не совпадает с порядком полей на сайте.

- И без учёта возможных косяков при копипащении.

- И часть полей на сайте выбираются из списка и, разумеется, только мышкой. И делать это приходится внимательно, т.к. значения очень похожие внешне.

===

Ну и да, я НЕНАВИЖУ монотонную работу. Для меня и 10 записей подряд внести напряжно. Так что сидел бы я пару рабочих дней точно...

===

Потом прикинул, сколько времени это заняло бы у секретаря, которая вобще-то и должна набивать эту базу.

- И которая из клавиатурных комбинаций знает, видимо, только ESC, да и то не уверен. И копировать/вставлять/переключать окна умеет только мышкой.

- Попробовал смоделировать её скорость работы (мышкой) - получилось секунд 10 на одно поле. Т.е. 7.5 часов, опять же - непрерывной, - работы.

- Сколько в процессе будет косяков в базе и сколько данных из других ячеек будет "случайно" вставлено в Ёксель - тут я просто до судорог боюсь представить, со своей педантичностью.

===

Мораль простая. По возможности, изучайте программирование в целом и формулы MS Excel в частности.

- Это реально ОЧЕНЬ помогает в работе.

- И ОЧЕНЬ экономит нервы.

Дубликаты не найдены

Отредактировал Veseliy.4el 4 месяца назад
+14

Господа гусары, молчать!

Не говорите ему про VBA...

раскрыть ветку 1
0

Да, не стоит, - я там вряд ли что-то новое узнаю.

- Был проект, когда из массива данных в примерно 30*10к ячеек посредством двух идущих подряд сводных таблиц вытаскивалась инфа по настройкам на листе настроек и тут же оформлялась в десяток графиков, строго совпадающих по своим габаритам и оформлению - их надо было печатать и затем сравнивать визуально. Затем они копировались в буфер автоматически, и оставалось только открыть Ворд и нажать CTRL+V.

- Ну да, делалось это одной кнопкой "Генерить", забыл сказать.

+5
Мухахаха. Решили шефы цмр внедрить. Выбор пал на Scoro, мол, не дорого и обещали всё настроить и обучить.

До этого база по клиентам(холодные звонки) была в Экселе.

Я попросила на обучении, чтобы показали как импортировать. Шеф сказала, что не будем на это время тратить, они сказали сами всё красиво сделают. По всем странам и фирмам.. Народ, что пришёл от Scoro радостно кивал.

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

Неделю я сводила базу, удаляля дубликаты, оставляла актуальные метки(стоит добавить, что эти дебилы не использовали общий Гугл док, который я создала, а продолжали личные базы)
Ну и получилось на выходе:

торговая марка/страна/чей номер/и дальше блаблабла

Довольная, что за выходные смогла, блядь, всё это свести, и что эти дебилы на выходные точно нихрена не испортят, отослала...

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

В итоге мне пришлось убить ещё выходные, чтобы привести всё в порядок, потому что луни-продажники пошли там строчить и прочие хуйню творить..
Но как в итоге оказалось, это было, блядь, только начало...
раскрыть ветку 4
+4
У меня один вопрос-нахера это делать в выходные?
раскрыть ветку 3
0
Потому что на неделе заябывало правки вносить, в итоге приходилось задерживаться в пятницу) справедливости ради: офис работал в неудобное время и шефы не соглашались, чтобы я приезжала на час позже и уходила позже, один хуй я была там эникеем и с утра до 10 никто не работал(не время для звонков), а в 9 утра и 5 вечера дороги стояли, поэтому я вечером пила кофе с другом пару часов, пока пробки рассосутся.

Хотя, спасибо им, мы с другом женаты уже третий год)
раскрыть ветку 2
+2
Если что, то excel и сам умеет экспорт в xml. Так что утилита не нужна. И внедрять ЭЦП тоже умеет.
касаемо того что поля в excel были не в том порядке- так в нем же их местами и поменять для дальнейшего юзания.
Но в целом я за любую автоматизацию ибо она реально помогает избежать кучу ошибок при переносе
раскрыть ветку 5
-2

Ёксель, помнится, сохраняет в XML в виде <строка><ячейка><ячейка>...</строка>. Как HTML, в общем.

А на этом сайте там древовидная структура, разбитая на секции. Плюс, утилита конвертации ещё и UUIDы присваивает каждой записи.

раскрыть ветку 4
+5
Ёксель. Кажется, начинаю понимать, как люди становятся хейтерами и подписываются, чтобы минусить все посты и комменты. Аж коробит.
раскрыть ветку 2
+3
Ткнул в первую попавшуюся страничку в гугле:
https://office-guru.ru/excel/eksport-excel-v-xml-i-naoborot-...
там делается карта-сопоставление. И все получается как надо.
таким образом секретарь может просто пользоваться одним excel и дальше выгружать на сайт или куда там надо...
+2
@jorra.jorra, может быть вы скинете ссылку в облако на свой конвертер, чтобы облегчить жизнь другим пользователям?
ещё комментарии
+2

Ёксель, серьезно?

+1

Автор, вы молодец, что автоматизируете рутинные задачи. Правда, это здорово, и чем больше людей будет этим увлекаться, хотя бы в примитивных вещах - тем быстрее мир станет лучше.

"Ёксель" очень сильно режет глаз. Возможно, вы в своем окружении его так называете, но вы же не для своих друзей/коллег пишете? Старайтесь использовать поменьше жаргонизмов при написании публичных материалов, если это не юмор.

Всего хорошего!

раскрыть ветку 1
0

Ну, по работе мне таблицы не нужны, дома, вроде, тоже. Но тут решили с женой привести в порядок финансы, прикинуть что, как и куда тратится - в гуглодоках сделал таблицу.

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

+1

Лучше день потерять, зато потом за пять минут долететь.

+1

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

раскрыть ветку 1
+1

А ведь была копипаста, то ли на ёбаном айти, то ли тут, про двух грузчиков - бывших программистов, сокращённых из-за того, что автоматизировали свою работу, и жутко на все эти конторы ругающихся...

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

Вообще, давно заметил, что айтишники - сами себе штрейкбрехеры, что им не мешает свысока поплёвывать на быдло и "тупых начальников" и жаловаться на жизнь.

+1
Спасибо, кэп
0
Power Query же есть
0
Где-то минут за 40 неспешной и творческой работы наваял простенький конвертер, не выходя из Ёкселя
...
Это 15*180=2700 секунд или 45 минут непрерывной, неотрывной работы.

Настоящий программист - это человек, который в течение 3х часов будет писать и отлаживать программу, которая за пару минут обработает ему данные, которые он вручную бы обрабатывал целый час :)

P.S. Я все равно за автоматизацию

0
Про функцию форма не слышали? Погуглите
0
Сократите время для ручной копипасты, можно два окна замостить на одном экране, альт-таб уходит, минус 0,3 секунды =)
0

похер, госслужба переходит на отечественное ПО - там только копипаст и работает

0

Пфф, обещание супер отзыва и 100 рублей на каком-нить фрилансерском сайте решают проблему, ща насоветуешь какие-то глупости изучать

0

Я как-то делал какие-то вычислния на VBA в Excel - ОЧЕНЬ медленно, и очень непонятные способы адресации ячеек! Пришлось даже специально писать свою функцию, чтобы адресовать нормальным способом [x,y].

Потом плюнул на это дело, и при импортировании из *CSV все вычисления, определения типов данных делал, и т.п. в Borland Delhpi. Там же строил и смотрел графики (миллионы точек без тормозов можно с компонентом TeeChartPro), и только потом, уже из Delphi передвал данные и по ним строил тормознутые графики в Excel. ...Очень долго мучался с экспортом в том моменте, что оказывается у книги есть аж два названия - на английском и на русском языке!

раскрыть ветку 7
+1

В настройках Ёкселя можно переключить на стиль адресации R1C1. В VBA наверно эта адресация тоже работает.

раскрыть ветку 5
+1

Какого нахрен Ёкселя? Вообще-то Ёксель это совершенно другая программа, не путайте ее с экселем

0

...Это не я вам минус ставил, так как всех ньюансов уже не помню.

Насколько я помню там даже не в этом дело, сколько адрессаций поддерживает язык - наверное они там все одновременно доступны, а в громоздкости этих записей!


Вот например как выглядит передача данных из Delphi в Excel через выделенный диапазон (вроде бы и очень быстро, но нихуя не понятно с первого взгляда, если не читать целую книжку по программированию VBA в Excel):


cell1:=Excel.Workbooks[ExBI_Data].Sheets[ExSI_Data].Cells.Item[ 1, 1];

cell2:=Excel.Workbooks[ExBI_Data].Sheets[ExSI_Data].Cells.Item[CountY+1, MaxX];

Excel.Workbooks[ExBI_Data].Sheets[ExSI_Data].Range[cell1,cell2]:=DataMS;


А как выглядит адресация в моих програмах на VBA - я посмотреть не могу. У меня дома стоит старый Excel 2003, а он что-то глючит (перзапускается) при открытии документов с макросами. Перегружаться в Win7, и ставить туда свежий MS Office ради этого я не буду.

раскрыть ветку 3
0
В vba для этого используется .cells(r,c) где r - это номер строки, а с - номер столбца. И для удобства надо переключить показ адресов в параметрах эксель на стиль R1C1
0

многие хотят, но не всем дано

раскрыть ветку 16
0

Увы, 8 лет преподавания показали, что если студент через год помнит хотя бы функцию ЕСЛИ или как вставить сводную таблицу - то это уникум, 1-2 из группы.

===

Естественники, 5 занятий на всё про всё :(

раскрыть ветку 15
+3
Если знания не использовать (год), то логично, что они испарятся (скорее всего).
+1
Зачем эти функции помнить? Они все в excel перечислены, в любой момент можно любую найти. Другое дело что применить надо правильно
раскрыть ветку 4
+1

Смотря на кого учится этот студент.

Если на какого-нибудь преподавателя музыки, то собственно нахрена ему оно?

А если на какого-нибудь программиста и не зная, не может за 20 секунд найти эту самую функцию "ЕСЛИ", то это и вовсе пенек, чего от него ждать, радоваться надо что под себя не ходит.

:)

раскрыть ветку 7
0

Скорее всего, студенты просто не знали, куда применить полученные знания в жизни, результат закономерен. Я тоже смотрел на эксель свысока (ибо весь такой из себя программист со стажем), пока мне не понадобился нестандартный кредитный калькулятор, чтобы рассчитать досрочные погашения по своей схеме. Изначально планировал напилить программку в любимом ЯП с экспортом в csv и дальнейшим просмотром в экселе. Потом дошло, что это будет неинтерактивно и неудобно. А вот если я сделаю эту задачу в экселе на формулах, то любое изменение одной ячейки переколбасит мне всю таблицу сразу же, и я моментально увижу результат. С тех пор я очень люблю и уважаю эту чертову программулину, даже без всякого VBA. Но для этого нужно было осознать, где она будет для меня полезной, и решить поставленную задачу, чтобы увидеть результат.

-1

А можно было бы просто наваять простенький импортер/экспортер на каком нибудь C# с использованием EPPlus за 10-15 минут в VScode и особо не париться 😌

Похожие посты
748

Автоматизация Excel с помощью VBA на примере графика отпусков

(Офисной оптимизации пост (теперь уже с примерами))


В прошлом своём посте (где рассматривал, что есть VBA в Excel и зачем это может пригодиться) целых 137 человек подписалось на меня, в комментариях были призывы к каким-нибудь примерам использования VBA, да и обещал я @Tiafreed подкинуть материалов для ВКР, так что набросал за ночь простенький (в сотню строк кода без использования массивов, классов и т.д.) файлик в Excel с VBA модулем. Пост разделю условно на две части: для пользователей, кому интересно просто посмотреть как выглядит, что делает, плюс скачать, поиграться и для продвинутых пользователей, кому интересно как это работает и как настроить подобное под себя. Цель поста - показать возможности VBA (частично), предложить интересный вариант реализации достаточно распространённой задачи по расчёту отсутствия сотрудников.

Если формат поста зайдёт, то в следующий раз набросаю пример, как формировать Word документы из списка данных в Excel, используя шаблон и пользовательскую форму (и не используя ублюдскую рассылку ИМХО).

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

Стартуем. Что нам нужно? Чтобы мы вносили людей в таблицу, забивали им отпуск, по нажатию одной кнопки машина рассчитывала нагрузку на каждый отдел (и организацию в целом) на каждый день и выделяла это графически. Бонус - построить график из полученных данных и научить выпадающий список самому подставлять данные в него прямо с листа двумя кликами.

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

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

*Все персонажи вымышлены, совпадения случайны


Дальше идём на другой лист, нажимаем кнопку

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

После чего идут расчёты какое-то время (у меня это где-то половина секунды)

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

Машина рапортует нам об успешном завершении своей миссии, идём смотреть, что вышло.

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

(Да, дизайнер я говно (как и VBA кодер в общем-то, но не об этом)) оформить самому никогда не сложно, главное, что на каждый день для каждого человека машина посчитала отпуска (можно любое другое отсутствие), вычислила цифры, разбила по отделам и отразила это графически, идём на главную

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

Тут всё ещё проще, кнопка для запуска, табличка с примитивными расчётами (формула МАКС) и график на 366 дней который можно с лёгкостью оформить самому и с помощью которого отлично видны провалы и пики нагрузок. Нажатием на выпадающий список, мы выбираем отдел по которому выводятся данные. Вот и всё, просто и удобно. Набросал за пару ночных часов. Сразу предупреждаю, что я это не предлагаю, как готовый продукт (успешное бизнес-решение ваших кадровых проблем), просто накидал маленький пример и делюсь им с вами, потому ответственность за его использование и обслуживание не несу, но если есть желание доработать его в своих целях, готов подсказать и помочь. Да, если возникла ошибка, вероятнее всего, что формат даты/числа нарушен, защиту от дурака не ставил, ибо цели чисто демонстрационные, но если вдруг мой косяк (протестить нет возможности) перезалью и ссылку в комментарии кину. Вот сам файл (на свой страх и риск :D, никаких гарантий, что будет работать). https://yadi.sk/d/lsRdKL8wQ42FFw (и не забываем включить макросы)

Сразу отвечу на вопрос - нахрена на VBA можно же на формулах? Да, можно, но так динамично (легко добавлять/убирать людей/отделы), наглядно и расчёт каждого дня формулами будет очень сильно грузить проц, а так мы считаем лишь раз, когда кнопку нажимаем.



Тэкс. Теперь вторая часть, в принципе, дальше можно не читать, так, для очистки совести её пишу. Кому интересно, как это работает или как вообще выглядит VBA на практике. Всё просто, в основе лежит вот эта строка (в ней мы будем искать колонку с датой отпуска и уже в ней работать)

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

Сначала мы подготавливаемся, что-то где-то очищаем, что-то добавляем (всё в общем-то закомментил) и сортируем строки по отделам

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

Потом запускаем цикл перебора строк с сотрудниками, в этом цикле для каждого работника мы проверяем, является ли он началом нового отдела, если да, то делаем разделитель, если нет - кладём болт и идём дальше, дальше рассчитываем отпуска, каким образом? Берём дату начала и ищем её в строке с датами, находим (или не находим и крашимся, если закосячили, не стал пилить защиту от дурака), берём эту ячейку как точку начала, прибавляем количество дней отпуска, отнимаем один (ибо включительно) и это наша точка окончания, объединяем эти ячейки, окрашиваем, в этих столбцах делаем простые расчёты (+1 к каждому дню и перерасчёт процентовки). После прохода по всем персонажам просто копируем полученные цифры на главную страницу, чтобы подставлять их в график. Всё, почти.

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост
Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

И простейший обработчик для выпадающего списка - просто вставляем в строку из которой берёт данные график данные из нужной нам строки. Рассчитываем её как номер строки начала (у нас 22) + номер элемента выпадающего списка (нумерация идёт с нуля у listindex)

Автоматизация Excel с помощью VBA на примере графика отпусков Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Ms Office, Длиннопост

P.S. Знаю что говнокод, так что буду рад конструктивной критике, чему-то подучиться у более знающих. В свою защиту скажу, что код писался на халяву, без обработчика ошибок, заплаток, защиты от выстрелов в ноги, ограничений действий, фиксирования диапазона вводимых данных, добавления полосы загрузки и всё такое, чисто для демонстрации. Спасибо, если дочитал это до конца.

Показать полностью 10
1032

Не только финансовая система может держаться на Excel

(Офисной оптимизации пост, точнее, об одном из инструментов этой самой оптимизации)


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

Не только финансовая система может держаться на Excel Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Ms Office, Длиннопост

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

Сами по себе формулы - очень мощный инструмент, на умении их использовать вывезло столько оптимизаторов, не владеющих программированием, что, думаю, нет еще офиса, где какой-нибудь местный Кулибин в обеденный перерыв не замутил еще какую-нибудь узкоспециализированную считалку для отдела. Но, работая с большими массивами возникает ряд проблем в использовании формул: относительность (ты получаешь не строку информации в базе данных, а динамичный результат вычисления) и оптимизация. Да, оптимизация на нескольких тысячах строк с десятком колонок и, допустим, парой связанных таблиц, это беда. Такая связка на i3 4гб оперативы просто будет повергать бедный офисный комп в ужас, заставляя его терять сознание при каждом пересчете и вылетать, если ты нарушил священный ритуал пятиминутного сохранения (знал я одного мужика, у него была такая формульная портянка, что сохранял базу он лишь два раза в день, перед обедом и уходя домой, ибо на сохранение уходило минут 20, ненавидели мы его все, ибо, уходя в отпуск, он оставлял это чудище кому-то из нас). Специфика работы была такова, что интернета у нас не было, а стороннее ПО нельзя - пользуйтесь чем дали. Окей, но автоматика же нужна, без неё никуда, потому пришлось использовать то, что есть и открывается это:

Не только финансовая система может держаться на Excel Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Ms Office, Длиннопост

Разработчикам показалось мало создать мощный инструмент формул, они решили впаять в и так могущественное ПО целый язык программирования (точнее его диалект) VBA (Visual Basic for Application), возможность подключать модули с других языков, использовать API (хоть и работает это ИМХО через жопу) и встроенную среду разработки (а это означает, что вообще ничего не надо качать, если у Вас есть офис, значит все что нужно, чтобы стать мамкиным программистом уже есть). Но что нам это даёт? Огромные (ну это как посмотреть) возможности для разработки ПО, преимущественно узкоспециализированного, без использования чего-либо кроме Excel; базы данных? О чём речь, Excel - это и есть БД (то ещё извращение, но для утонченных можно связать с Access или Sql), возможность проводить расчёты (циклы, тонкие переборы, фильтрация) над большими массивами информации в кустарных условиях, использовать встроенные библиотеки для работы с другими приложениями (самое важное - MS Word), возможность наконец применить Visual Basic, который ты учил лет 20 назад, а он нигде так и не пригодился, ну и самое главное, научиться основам программирования, если ты что-то шаришь, но твои лучшие успехи - верстка шаблонов сайтов на HTML, CSS с вкраплениями PHP. Также это нам даёт возможность кодить на ведре (прям совсем ведре-ведре). VB хоть и относится к ООП, но де-факто работа в нём редко сводится к пользовательским классам, всяким тонкостям и т.д., в основном он ощущается как скриптовый язык, работа приходит к чему:

Не только финансовая система может держаться на Excel Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Ms Office, Длиннопост

накидать разных элементов управления (это если у нас пользовательская форма, если просто код, то вообще просто запихать всё в модуль) и привязать к ним обработчики событий. Вкурил в циклы, условные конструкции, чутка простого синтаксиса и на рабочий телефон уже звонят из Майкрософт и предлагают тебе перейти к ним (Нет). Но не буду вдаваться в разработку ведь не об этом пост, что из этого можно получить на практике? Рабочие программы с базами данных и пользовательским интерфейсом (чтобы упростить и ограничить взаимодействие пользователя с данными) или скрипты для обработки целой тонны упорядоченной (а может и нет, слава условным конструкциям) информации. Например (набросал за минуту, палками не бить):

Не только финансовая система может держаться на Excel Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Ms Office, Длиннопост

Немного возни и у нас есть пользовательская форма со списком сотрудников и полями, которые надо заполнить, на выходе по нажатию кнопки мы получаем готовую вордовскую справку. Для этого нужен лист с данными сотрудников, лист список справок и шаблон MS Word. Готово, вы бог офисной оптимизации. И так можно многое: отчёты, справки, товарные чеки, письма, документы разные, приказы целые, любые действия с информацией.

Сразу предупрежу всех, кто уже нацелился писать "на кой хрен ты раскопал этот старый кусок говна на заре 30го десятилетия 21го века". Пост чисто информативный, это не гайд, не самоучитель, может кому интересно, на прорыв в IT сфере ни разу не претендует, это раз, есть в нашей стране места, где развитие этой сферы отстаёт как раз на эти 20 лет, это два, ну и просто, может кому понадобится, может кто-то захочет на работе чему-то подучиться.
Какие минусы? Оптимизация всё равно сосёт бибу (но не такую, как формулы), безопасность тоже, чисто теоретически можно использовать криптографическое шифрование БД и расшифрование в ходе работы, но я не проверял, можно ли легко вскрыть защиту самого VBA проекта, да и оптимизация пососёт ещё большую бибу (да и вообще, кому это надо, ребят, это же Excel), ну а стандартную Excel защиту листов можно вскрыть обычным архивом и блокнотом. Также, недостатком я считаю ряд ограничений среды, по типу того, что без API не работает прокрутка колёсиком мыши, стабильность - excel иногда любит чудить. Совместимость - отдельные танцы с бубном для x64 и x32 (но это если используете сторонние API, модули). Ну и объяснять людям, как разрешить запуск макросов :D.
Спасибо, если дочитал этот длинный (и наверное скучный) пост до конца, если вдруг кому стало интересно могу написать ещё много чего, например, как написать сапёр на Excel, как сделать различные простенькие, но очень нужные офисные программки, как научиться этому (но.. зачем?), как использовать макрорекордер и много чего ещё, связанного с Excel. А ведь это всё ещё цветочки, есть люди, которые целые стратегические пошаговые игры в ячейках писали на том же VBA.

P.S. Если ты профи, знаешь больше и лучше меня, и видишь, что я в чём-то неправ - поправь, буду рад.

Показать полностью 3
172

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0]

Доброго времени суток вам, пикабушники. Решил поделиться с вами личным рецептом как легко и без напряга вести домашнюю бухгалтерию, записывая все покупки, при этом не тратя много времени и сил.
если кому интересно - прошу под кат, остальные проходим мимо.

Коммент для минусов прилагается.

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

Какое-то время назад появилась необходимость вести домашнюю бухгалтерию и собирать статистику по тому какие продукты покупаются, как часто, за сколько, где и т.п., с целью оптимизации расходов и планирования домашнего бюджета.
Но после нескольких неудачных попыток реализации проекта средствами Excel, Access и т.п., пришел к пониманию нескольких ключевых моментов:
1) Решение должно быть на мобильной платформе (т.е. никакого ПК)
2) Действия должны быть максимально простыми и удобными (т.е. чтобы все можно было делать на ходу в пару кликов)
3) Действия не должны занимать много времени

Подробно рассмотрев все вышеперечисленные пункты, я остановил свой выбор на реализации проекта на платформе Andrioid, но к сожалению изучив весь Play Market осознал что готовых решений на данную тему там или нет, или есть, но чем-то они меня не устраивают. В основном в большинстве случаев это было - не гибкость, т.е. невозможность изменять некоторые пункты под свои конкретные нужды.
Вариант написать свою программу под дройда, к сожалению, тоже был забракован, т.к. я не имею опыта разработки для дройда, а свободного времени очень мало.
Но, в итоге, решение было таки найдено!

Шаг[0] - Получение данных из чека
С переходом России на систему онлайн касс и электронных чеков появилась отличная возможность не переписывать данные из чека, а копировать все с сайта ФНС. Для этих целей было скачено приложение, при помощи которого можно легко отсканировать QR код на чеке и получить электронную версию чека. Выглядит это примерно так:

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

Далее, нажав "Выделить всё" и "Копировать" мы получаем все что нужно.

Шаг[1] - Преобразование и структурирование данных
Получение данных из чека, как оказалось, самая простая и незатейливая часть всего процесса. Дальше идёт танцы с бубнами.
После довольно продолжительных поисков в Play Market было найдено приложение - простая СУБД для дройда, с возможностью создания форм для заполнения и сохранения данных в виде таблиц, которые в последствии можно экспортировать в Google Drive в виде excel таблицы, и в котором есть возможность создавать довольно сложные скрипты и триггеры по средством JavaScript.
Для полноценной работы и удобства пришлось создать в этом приложении 3 библиотеки:
1) Чеки - для данных из чеков.

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

В форме для заполнения всего три поля:
"Магазин" - Текстовое поле, где нужно выбрать один из существующих пунктов, или создать новый нажав "+"
"Координаты" - соответственно координаты магазина. Это нужно для большей точности, так как иногда в разных магазинах одной сети ассортимент немного различается.
"Чек" - поле куда нужно вставить данные скопированные из приложения проверки чеков ФНС.
После сохранения формы все выглядит таким образом:

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

После сохранения добавляются поля:
"Адрес" - Подтягивается автоматически по координатам
"ИНН" - Подтягивается скриптом из чека
"ФН" - Подтягивается скриптом из чека
"ФД" - Подтягивается скриптом из чека
"ФПД" - Подтягивается скриптом из чека
"ККТ" - Подтягивается скриптом из чека
"Итого" - Подтягивается скриптом из чека
"Товары" - Подтягивается скриптом из чека

Так же после сохранения срабатывает триггер, который импортирует данные из чека в две другие библиотеки:
"Товары" - справочник товаров
"Покупки" - таблица с покупками

Вот так выглядит экран редактора скриптов:

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

После импорта данных в библиотеке "Покупки" всё выглядит примерно таким образом:

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

Каждую запись можно открыть и тогда будет возможность просмотра данных по покупке более подробно:

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё
Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

Все данные товара, если товар есть в справочнике подтягиваются скриптом в момент импорта. Если товар новый то придется заполнять самим. Но так как товары покупаются примерно одни и те же, то со временем необходимость заносить руками данные отпадёт.
Экран редактирования записи, кстати, выглядит подобным образом:

Домашняя бухгалтерия, или Javascript от не программиста | Часть [0] Javascript, Программирование, Android, Субд, Excel, Длиннопост, Бухгалтерия, Моё

В случае корректировки каких-либо данных по товару в карточке покупки, данные в справочнике тоже обновляются скриптом.

В последствии, все данные из трёх библиотек - "Чеки", "Покупки" и "Товары" можно легко синхронизировать с Google Drive, где они будут доступны для просмотра и редактирования в виде Excel таблиц.
Для примера, таблица синхронизирована с библиотекой "Товары":
https://docs.google.com/spreadsheets/d/1jghXNRnxEgMop6qzA0pE...

В итоге, получилась довольно не плохая система сбора и хранения данных по покупкам, с помощью которой можно вести домашнюю бухгалтерию, и планировать расходы на перед.

Если пост кому-то будет интересен и не утонет в минусах, то в следующий раз расскажу обо всём подробнее...

Показать полностью 8
3766

Excel в качестве 3D-движка

Да, Excel. Та офисная программа с таблицами. Некто скрывающийся под ником "C Bel" написал на ней простенькую бродилку.


"Документ" поддерживает:


• генерацию лабиринтов

• рендеринг в реальном времени

• освещение

Подробнейший разбор (на английском): https://www.gamasutra.com/blogs/CBel/20180213/308549/3D_engi...


P.S. Это далеко не первый случай, когда Excel используют в качестве игрового движка. До этого народным умельцам удалось воссоздать его мощностями... X-Com.

181

Ответ на пост Excel в excel

Послезавтра релиз, дел полно, сижу листаю Пикабу и натыкаюсь на такой пост

http://pikabu.ru/story/excel_v_excel_5008626


Посидел, пораскинул мозгами: "А надо ли мне это сейчас?" Решено - надо.

Я же программист, да из захотелось отвлечься от громоздких корпоративных разработок.

С перерывами и отвлечениями на работу чай за часик накидал консольную программку на C#. Работает в Office 2013.

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

Ответ на пост Excel в excel Excel, Комунечегоделать, Гифка, Тыжпрограммист, Программирование

Перевод картинки в Excel занял примерно 50 минут. Держа в голове, что по работе много всего делать, я в это время основательно ничего не делал. Кажется кто-то скоро получит по шапке.

Код лежит тут:

https://github.com/bildeyko/ExcelPic

а exe файлик с картинками и полученным xlsx файлом в архиве тут:

https://github.com/bildeyko/ExcelPic/releases/tag/v1


Если кто-то захочет запустить, делается это так: в консоли, перейдя в директорию с  программой, ввести ExcelPic.exe 1.bmp

Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: