Как стать автором
Обновить
15.5

Visual Basic for Applications *

Visual Basic для автоматизации в приложениях

Сначала показывать
Порог рейтинга
Уровень сложности

VBA, Word: перекрёстные ссылки согласно ГОСТ (убираем из текста паразитные названия «Рисунок..», «Таблица..» и тп)

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 6.3K

Меня попросили написать статью по поводу известной проблемы с паразитными названиями перекрёстных ссылок в тексте документа MS Word, а именно, когда вы вставляете в текст документа перекрёстную ссылку (меню ссылки/перекрёстная ссылка) Word позволяет вставить либо название типа "Рисунок ..." либо название полностью, что приводит к тексту типа "...на рисунке (Рисунок 10) мы видим..." или ещё более нелепым конструкциям, тогда как согласно ГОСТ необходимо оставлять только номер.

Эту проблему просто решить с помощью небольшого скрипта VBA.

Читать далее, посмотреть код
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 33

Новости

VBA: добавляем в документ Word рисунки из любой папки и формируем подписи к рисункам

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2.2K

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

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

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

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 9

Простой VBA скрипт для преобразования таблицы excel телефонной базы контактов в файл .vcf

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 9.9K

Недавно я пытался перекинуть свои контакты из старого Блекберри в телефон с Андроидом и меня постигла неудача - оказалось не существует инструментов для корректного преобразования одного формата в другой.

Тогда я решил преобразовать мои контакты, полученные из старого телефона, в таблицу excel и с помощью несложного скрипта в VBA преобразовать её файл вида .vcf, который можно скормить любому современному телефону.

Таблица у меня получилась такого вида:

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 12

VBA, Windows 10: манипуляция файлами с длинными путями

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3.5K

Недавно, работая в VBA, при попытке переименовать группу файлов, расположенных в длинных вложенных директориях я столкнулся с кучей ошибок. Оказалось, что в Windows (в данном случае была 10 версия) существуют ограничения на длину путей (см.к примеру https://learn.microsoft.com/ru-ru/windows/win32/fileio/maximum-file-path-limitation?tabs=registry). Решения, найденные в результате поиска не принесли результата. Да, для манипуляции с длинными путями необходимо разрешить их в реестре (Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnable - значение 1), но даже если они будут разрешены, манипулировать вы ими не можете, т.к. сам проводник виндовс не позволяет работать с длинными путями. В то же время с длинными путями хорошо работает проводник 7-Zip File Manager, при этом он имеется практически на каждом компьютере.

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

скрипт VBA, файлы с длинными путями
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 16

Истории

Экспорт статьи из LibreOffice Writer в Habr Flavored Markdown или HTML

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 1.7K

Резюме.
В статье дается ссылка на файл в формате ODT (основной формат файлов, используемый в текстовом редакторе LibreOffice Writer), содержащий макросы на «родном» для LibreOffice языке программирования макросов BASIC, которые осуществляют экспорт текста из LibreOffice Writer в новый файл в формате Habr Flavored Markdown (далее - HFM) или HTML, в виде, пригодном для размещения статьи в интернете, например, на сайте habr.com.

Текст данной статьи был экспортирован в формат HFM для размещения на сайте habr.com с помощью библиотеки макросов, содержащихся в данном файле.

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

Рассмотрение макросов на языке BASIC, которые осуществляют экспорт, предполагается в отдельной статье.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 13

Что не так со «слиянием» в word+excel и как по уму автозаполнять шаблонные документы

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3.6K

Надысь зашел здесь в комментах разговор про автозаполнение документов по шаблону. Визави имел неосторожность положительно отозваться за нативное майковское "слияние excel+word". На что я, по поводу пятницы, решил вывалить ответные соображения насчет неустранимых дефектов этого феномена.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 13

Графическое программирование конечных автоматов для Arduino. Часть 1

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 8.4K

Как только сложность программы выходит за пределы "Hello Word!", у начинающих ардуинщиков появляются проблемы. Самая тяжелая из них - удержать в голове структуру программного кода. Нельзя сказать, что у опытных программистов встраиваемых систем этой проблемы нет. Достаточно попытаться реанимировать собственный проект двухлетней давности, если он недостаточно документирован, то включиться в работу будет очень трудно.

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

Все это хорошо, но новичку просто лениво. Зачем что-то рисовать, если того же результата можно добиться несколькими строчками кода? Ответ: макрокоманды. Такие, например, как WAIT(Time,Counter), она позволяет с легкостью организовать временную задержку. И это будет вовсе не Delay(Time) от Arduino, которая остановит выполнение всего остального пользовательского кода. Нет. По предоставляемым возможностям ближайшей аналогией будет RTOS - операционная система реального времени. Если один автомат замер в ожидании отсчета времени, то остальные автоматы проекта будут продолжать работать.

Рассмотрим практическое использование графических конечных автоматов под Arduino на примере часов-метеостанции.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 13

Тестируем алгоритм обработки данных в Excel на Visual Basic for Application и тёплые ламповые чётные гармоники

Время на прочтение 2 мин
Количество просмотров 1.8K

В первом приближении надо загрузить wav или mp3 файл с музыкой в Excel, провести над загруженными данными Digital Signal Processing (DSP) или Цифровую Обработку Сигнала (ЦОС) по определенному алгоритму на Visual Basic for Application (VBA) ), сохранить результат в wav файл и прослушать его. Сравнительный пример звуков после обработки и до обработки https://disk.yandex.ru/d/y18kiOIMN7CLCA

Читать далее
Всего голосов 32: ↑32 и ↓0 +32
Комментарии 33

2 x 2 = 3 или сказ о том, как я Visual Basic реверсил

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 2.7K

Жив еще Visual Basic: программы еще живы. Байт-код VB выполняется виртуальной машиной msvbvm60.dll , которая до сих пор живет в каталоге C:\Windows .

Задача - разгадать алгоритм проверки ключей.
zira's ZittoKeygenme https://crackmes.one/crackme/648b452233c5d4393891390d

Ключи раздают? Дайте два
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 2

Технические лайфхаки для конкурсов

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 1.3K

Многие SMM-щики вынуждены проходить все круги ада, пока не автоматизируют максимум процессов при проведении нетипичных конкурсов. Поэтому хотим поделиться некоторыми из используемых нами технических лайфхаков.

Узнать лайфхаки
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 3

Как Visual Basic.NET отлично помогает решать инженерные задачи, связанные с Word и Excel

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 4.2K

Как язык Visual Basic .NET отлично помогает решать рутинные инженерные задачи, связанные с Word и Excel.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 50

ChatGPT не умеет писать макросы

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 8.9K

Ты попался на кликбейт, олуу... ну нет, на самом деле не совсем.

Итак, все вы знаете (а если не знаете, то пора выбираться из вакуума в котором вы находитесь) про такую нейросеть как ChatGPT. Мне все никак не удавалось попробовать его поюзать в связи с некоторыми сложностями доступа, и вот вчера наконец повезло. Ну и естественно я начал проверять его знания VBA😌

Читать далее
Всего голосов 6: ↑2 и ↓4 -2
Комментарии 18

C# как замена VBA в Excel

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 12K
Я довольно много пишу на C#, и это мне нравится. Время от времени мне хочется, чтобы можно было использовать C# внутри других приложений.

Думаю, одним из таких приложений, в которых хорошо приживётся C#, был бы Excel, этим языком можно было бы заменить VBA. Язык VBA уже немного отстаёт от времени, а Microsoft не планирует его апгрейдить. Вместо него — компания предлагает среду-песочницу для JavaScript под названием Office Scripts.

Я понимаю привлекательность JavaScript для веб-версии Excel, но не в качестве хорошей замены VBA.

Так как этим не собирается заниматься Microsoft, я решил, что могу попробовать сам. В конце концов, если Microsoft так увлечена JavaScript, маловероятно, что она выдавит меня с обширного рынка использования C# в Excel.

Итак, вот что я создал:

QueryStorm IDE, выполняющая запрос LINQ для таблицы Excel

«Это что, IDE языка C#, выполняющая запросы LINQ для таблиц Excel?» Именно. Всё так и есть.

Я назвал это QueryStorm. Моя работа над этим проектом началась ещё в 2014 году. Изначально у него имелась только поддержка SQL, и с тех пор я продолжал над ним работать, постепенно добавляя поддержку скриптинга на C#, пользовательских функций C#/Excel, поддержку NuGet, отладчик и даже магазин приложений!
Читать дальше →
Всего голосов 88: ↑87 и ↓1 +86
Комментарии 22

Ближайшие события

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

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 4.2K

В продолжение рассказов о Big Data для простых смертных предлагаем попробовать себя в решении жилищного вопроса: как отличаются цены за квадратный метр на разных этажах. Житейская польза от этой заметки заключается в получении без особых усилий и без специальных навыков достоверных знаний об ожиданиях на рынке недвижимости. Государство скрывает цены реальных сделок, но иметь адекватное представление о настроениях продавцов можно и без знакомого опытного риелтора, сына маминой подруги.

Статья представляет собой пошаговую иллюстрированную инструкцию по решению задачи анализа этажности городской застройки, в т.ч. расчет скидок за первый и последний этажи. В качестве модельного города принят Брянск. Расчетный файл прилагается и его листы пронумерованы в последовательности выполненных операций. Шаблон расчета легко адаптировать для другого города и вида недвижимости.

Изложенный подход призван аргументировать представление о том, что Big Data не является прерогативой дата сатанистов, но в известной степени доступен неспециалистам. Материал может быть интересен всем, кроме работающих с данными профессионально. Приведенные приемы будут востребованы в работе с данными для риелторов и оценщиков без навыков программирования. Технохардкор в данном случае заключается не в инсайтах применения фреймворков типа MapReduce, а в реализации всего пайплайна средствами общеизвестного офисного приложения.

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

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 0

Делаю Package Manager для VBA

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 3.8K

Я знаю, какое у вас сейчас лицо

Читать далее
Всего голосов 35: ↑34 и ↓1 +33
Комментарии 44

Как мы быстро создавали задачи в Jira по ГОСТовому ТЗ и почему это облегчило работу с госзаказчиком

Время на прочтение 11 мин
Количество просмотров 2.7K

Михаил Михайлец, руководитель группы аналитиков направления облачных решений Лиги Цифровой Экономики, рассказал, как его команда попробовала быстро подготовить задачи по классическому ТЗ (ГОСТ 19) в Jira при работе с государственным заказчиком и что из этого получилось.

Пожалуй, большинству известно, что ГОСТ предусматривает водопадную модель разработки ПО. До недавнего времени она была зафиксирована в постановлении Правительства Российской Федерации от 6 июля 2015 г. № 676 «О требованиях к порядку создания, развития, ввода в эксплуатацию, эксплуатации и вывода из эксплуатации государственных информационных систем и дальнейшего хранения содержащейся в их базах данных информации».

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

В теории можно породить жизнеспособного «кентавра» — если в течение спринтов проходить указанные стадии проекта раз за разом в ходе разработки каждой функции приложения.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 2

Разработка надстройки Macro Tools VBA – для автоматизации процесса создания макросов в VBE MS Excel

Время на прочтение 3 мин
Количество просмотров 3.2K

Доброго времени суток!

Предыстория — личный опыт

Хочу поделиться своим опытом использования надстроек, которые позволяют автоматизировать процесс разработки макросов в Visual Basic Editor MS Excel (далее VBE). В результате которого я разработал свою надстройку для разработки макросов VBA.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 27

Как я использовал-таки классы в VBA и даже полюбил это дело

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 7.9K

На собеседовании:

- Как у вас с Экселем?

- Я его ненавижу!

- О, да вы VBA-разработчик!

Я не могу открывать здесь Америк, ибо не технарь, но раз тут был чей-то текст, как написать "Hello world" в Word'e, и всем понравился, то думаю, что нелишним будет и мой небольшой опыт.

п1. Как обычный пользователь пишет макросы в эксельке

Периодически и даже регулярно мне приходится читать чужой код на VBA. Как русскоязычных соотечественников, так и их зарубежных коллег. И создается впечатление, что что макрописание в MS-продуктах, несмотря на большую распространенность, достаточно неплохо разработанный макрорекордер (по сравнению с импортозамещающими аналогами - так просто идеально разработанный), в русский народ не пошло, или почти не пошло. Подавляющее большинство кода для Экселя - это так или иначе связанные между собой и кое-как зацикленные куски, записанные макрорекордером и обработанные напильником.

Ну, например, очень редко для обращения к ячейке употребляется метод Cells с индексами номера строки и колонки, по большей части используют уродцев типа Cells("A"&(i+1)) , а переход к следующей ячейке делают через Offset (и. что интересно, код работает - умудряются не запутываться в сдвиге А относительно Б, С относительно Б и так далее, могу только предположить, сколько такую связку из офсетов отлаживают). Массивов в их классическом виде средний российский макрописец не признает в принципе, и я догадываюсь, что он просто не знает, что есть такая сущность, и все переборы и вычисления проводит. обращаясь напрямую к ячейкам (хотя сансэй Уокенбах в каждой книжке повторяет, что массивы работают на порядок быстрей).

Читать далее
Всего голосов 37: ↑33 и ↓4 +29
Комментарии 15

Давно забытый ExecuteExcel4Macro

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2.2K

Привет, Хабр!

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

Разумеется, это было только временное решение, и мы уже заменили его российским специализированным ПО, автоматизирующим HR-процессы в сфере управления талантами.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 10

Библиотека функций для расчета свойств воды и водяного пара

Время на прочтение 17 мин
Количество просмотров 1.3K

В 2014 году захотел и реализовал библиотеку функций для Excel на VBA.

При составлении библиотеки использованы документы Международной ассоциации по свойствам воды и водяного пара (МАСПВ, анг.IASPW):

1. Revised Release on the IAPWS Industrial Formulation 1997 For the Thermodynamic Properties of Water and Steam. August 2007. (Далее в тексте IF97)

2. Release on the IAPWS Formulation 2008 for the Viscosity of Ordinary Water Substance. September 2008.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 5

Вклад авторов