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

Visual Basic for Applications *

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

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

Как сделать так, чтобы на последнем листе Экселя оказались не только подписи директоров, но и суммы

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

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

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

Самым простым виделось сделать это, пользуясь средствами самого Excel. Для этого подходило Visual Basic для приложений (VBA) в Office.

VBA Excel и форматирование
Всего голосов 4: ↑4 и ↓0+4
Комментарии17

Новости

VBScript убирают из Windows. Но почему и зачем?

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

Корпорация Microsoft сделала интересное завяление — VBScript уберут из ОС Windows. Речь, конечно, о поддержке сценариев VBScript. Почему скриптовый язык программирования потерял актуальной для корпорации? Подробности — под катом.
Читать дальше →
Всего голосов 38: ↑29 и ↓9+31
Комментарии74

Типизированные массивы должны умереть

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

Хаха :). Не, я серьезно. Позвольте мне объяснить.

Хорошо. Что такое типизированный массив?

Это одна из тех языковых причуд, которые делают VBA таким... я бы сказал, восхитительным.

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

VBA макросы. От бессмыслицы к осмысленному. Интерфейс

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

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

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

Истории

VBA макросы. От бессмыслицы к осмысленному. Ядро

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

Наверное, пару лет назад, я бы отдал многое за подобную статью. Тогда, я рыл интернет в поисках информации о структурировании VBA проекта, но толком ничего не находил.

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

Чтиво про рефакторинг VBA кода.

Читать далее
Всего голосов 18: ↑17 и ↓1+21
Комментарии20

Как исправить изменившийся номер договора в нескольких сотнях Эксель файлов менее чем за минуту

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

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

Так появилась задача однотипной замены номера договора и его даты в каждом из *.xlsx файлов, которые были расположены в папках, названных по адресу объекта. Таких папок было множество и некоторые ещё имели вложенные подкаталоги.

Ручной способ, который состоит из использования сочетания клавиш Ctrl + H хоть и позволял сделать замену во всей книге Microsoft Excel сразу, но подразумевал что придётся открыть каждый файл по отдельности, нажимать несколько раз (под замену не только номер, но и дата) сочетания клавиш для замены, сохранять книгу Экселя, закрывать книгу, открывать новую книгу. В общем совершать множество механических действий.

Я конечно же стал думать, как можно наиболее простым для себя способом сделать это множество автозамен. Выбор сразу пал на VBA - Visual Basic для приложений. Ведь при помощи VBA можно заставить Эксель делать то, чего он не умеет по умолчанию.

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

VBA Excel автозамена
Всего голосов 18: ↑14 и ↓4+12
Комментарии42

Взгляд НСИ на VBA в Excel и не только

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

Салют! На связи Ганзюк Владимир. Тружусь инженером по нормативно-справочной информации (НСИ) в компании Bimeister.

Хочу поделиться с вами опытом работы с Excel: расскажу, как можно ускорить выполнение рутинных задач при работе с составлением наименований согласно нормативно-технической документации (НТД).

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

Outlook как сервер микросервисов

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

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

Ты ж у нас один программист !!!
Небольшая вводная. Я для друзей, по их запросам, выгружаю данные из MS SQL Server'а. Друзья дают исходные данные, для которых надо сделать выгрузку в файлах .csv. Исходных данных (ИД) может быть от 1 до ... строк. Я загружал данные в sql таблицу с помощью задачи или Task в английской версии в SQL Server Management Studio (SSMS). Исторически сложилось, что все sql файлы со скриптами хранятся на моем ПК. Я файлы открывал в SSMS и запускал на выполнение. Результаты записывал в файл и отправлял сообщение, что обработка выполнена. Друзья забирали файлы с результатами. 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Недавно, работая в 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, файлы с длинными путями
Всего голосов 6: ↑4 и ↓2+5
Комментарии16

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

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

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

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

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

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

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

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

AdIndex City Conference 2024
Дата26 июня
Время09:30
Место
Москва
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

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

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

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

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

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

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

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

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

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

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

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

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

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

В первом приближении надо загрузить 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 мин
Количество просмотров3.2K

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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