Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Открой для себя волшебный мир реальной рыбалки. Лови реальную рыбу на реальных водоемах! Исследуй новые рыболовные места и заполучи заветный трофей.

Реальная Рыбалка

Симуляторы, Мультиплеер, Спорт

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
3942
cartmanisonfire
cartmanisonfire
2 года назад

Я настроил SolidWorks и вам не придется тратить столько времени⁠⁠

Я давно работаю в солиде потому многократно занимался его настройкой “с нуля”

пересмотрел огромное кол-во видосов, мануалов и обсуждений на форумах и составил этот гайд для НОВИЧКОВ-АДЕПТОВ солида, дабы вы смогли быстрее адаптироваться и начать эффективно работать, а после еще и не плевались с ошибок, допущенных по неопытности (шутка про программистские костыли), “подводных камней”, о которых почти нигде ни в каких гайдах и руководствах не упоминается, однако знание которых сильно упростит работу.

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

Опустим 100500 абзацев от сммщиков про то, что такое solidworks, зачем ты его выбрал и бла бла бла - ты уже сам знаешь что это и зачем это, потому перейдем сразу к делу.

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

На выбор у тебя шаблоны “деталь”, “сборка” и “чертеж”. Ты выбираешь “деталь”, создаешь ее. В процессе ее создания ты сталкиваешься с проблемами по типу “неточного отображения” скруглений, неудобного способа ввода размеров  (субъективно), цвета, примечаний и т.д. т.п.

Далее выбираешь “создать чертеж из детали” и создаешь чертеж. И в процессе создания чертежа ты сталкиваешься с проблемами: неправильный штамп, нет автоматического заполнения полей в штампе, не “по госту“ размеры, надписи, примечания и т.д. и т.п.

Далее создаешь спецификацию… И в ней ничего нет.

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

Начнем с самых важных первичных настроек: “Настройки пользователя”.

Открыв солид сразу жмем шестерню в верхней панеле и лезем в эти настройки.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд
Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

ВНИМАТЕЛЬНО изучаем каждый пункт и в случае необходимости настраиваем его. Да - их много. Да - займет много времени. Но - это необходимо. Иногда для понимания что настройка меняет проще начать создавать модель и прям на ней всё тестить - здесь изменения применяются в “реал тайме” потому всё наглядно будет. Но в целом настройки в этом меню влияют на интерфейс, способы ввода, производительность и т.п. Чуть позже, когда ты освоишься в программе, ты сам поймешь что захочешь поменять, и теперь будешь знать где это делается. Настроили - радуемся, ибо эти настройки применяются и сохраняются на весь профиль и до следующего ручного внесения изменений.

Далее - настроим “чертежный стандарт”.

Создаем “новую деталь” (пустую - ничего более не делаем) из стандартного шаблона, сразу жмем шестерню и выбираем “свойства документа”. Лезем в эти настройки - ВНИМАТЕЛЬНО ознакамливаемся … бла бла бла … это необходимо. Из особо бесящих пунктов которые по умолчанию вечно не “по госту” настроены:

  • шрифты (везде),

  • стиль примечаний,

  • первичная и двойная точность размеров,

  • стили отображения линий гиба,

  • обозначения видов,

  • детализация,

  • настройки листового металла.

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

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

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

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

Создаем новую “деталь” - и рядом с шестерней видим кнопку “свойства файла”.

Здесь прописываются параметры, автоматически подтягиваемые по “имени свойства” в различные поля. Если вы начинающий пользователь - то вам потребуются как минимум поля “обозначение”, “наименование”.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

Дело в том что с ростом кол-ва деталей неизбежно повторение их названий и солид “заругается” на вас за то что в сборке будут присутствовать детали с одинаковым названием, ибо для него это одна и таже деталь, даже если они лежат в разных папках. Потому привыкайте к наименованию файлов в формате:

“уникальный инвентарный номер (обозначение)”+“пробел”+”название (наименование)”

для ускорения поиска и удобной работы с нумпад блоком - ставить запятые в номере можно и нужно. Пример: “276,000,012 Труба” или “276,010,000СБ Каркас из труб”.

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

Далее если вам потребуется еще несколько автоматически заполняемых поля, то можно использовать “Авто Параметры”, которые выглядят следующим образом:

$PRP:"название параметра"

Вот список некоторых из автоматически создаваемых параметров в Солидворксе:

  • SW-Short Date: дата в формате короткого отображения (01.01.2023).

  • SW-Long Date: дата в формате длинного отображения (01 января 2023 г.).

  • SW-Mass: масса модели в килограммах.

  • SW-Volume: объем модели в кубических метрах.

  • SW-Material: название материала, заданного для модели.

  • SW-Density: плотность материала.

Остальные ты загуглишь когда тебе это потребуется.

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

Чтобы использовать другой/иной/чужой/нечто шаблон тебе нужно знать следующее: не обязательно заменять оригинальные шаблоны и файлы в папке установки солида. Даже более - не нужно хранить все эти шаблоны и настройки на диске С вместе с солидом. К примеру у меня есть диск D в котором создана синхронизирующаяся через облако папка “Distribs” в которой я и храню все свои настройки солида. Это позволяет мне иметь в облаке для нескольким компьютеров одну и туже папку с настройками, которые автоматически обновляются для всех пк при внесении изменений на одном из них.

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

И тут еще пара нюансов:

во первых: при настройке шаблона чертежа тебе нужно настроить и все штампы/форматки/основные надписи (всех размеров - от а4 до а0). Это нужно для того чтобы во всех форматках были заготовлены поля с нужными параметрами для автозаполнения.

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

Но не переживай - их есть у меня. Вдобавок еще и шаблончик таблицы спецификации и вырезов сварного изделия. Прикреплю в конце архивом. И еще конечно блок гостовских профилей. Если ты еще не в курсе - в солиде есть команда "конструкции", позволяющая создавать модели из "вытяжных" профилей стандартных и собственных сечений. Можно указать и их расположение в настройках файлов (по умолчанию по адресу: C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\russian\weldment profiles)

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

Для начала - я пользуюсь пакетом макросов SWPlus Macros:

https://www.youtube.com/watch?v=BJPRxJWPjhc&list=PLuovjC...

Я его немного допилил под себя, поправил какие мне нужно параметры. Сам слегка поправленный пакет я прикреплю, однако ссыль ведет на ютуб автора где тот ныне рекламирует еще и платную версию, собранную в виде подключаемого модуля к солиду. Пока у меня не хватило времени чтобы ознакомиться с ней (да и деняг жалко), но в целом по функционалу она почти ничем не отличается от того пакета макросов. Видео инструкция по их установке имеется, но благодаря нерасторопному темпу голоса автора и излишней перегруженности ненужной инфой суммарно заняла 9 видосов от 5 до 60 минут, а смотреть на скорости ниже 2х - тяжко. Потому предлагаю короткий гайд как быстро настроить эти макросы:

1 - распакуй все в подготовленную папку с настройками для солида, так чтобы выглядело как на скрине ниже:

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

и вот еще вдогонку что ты закинешь в папку рядышком (можно даже в ту же):

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

2 - Выполни указание расположений шаблонов как указано в руководстве выше, указав сначала “шаблоны по умолчанию”, а после “месторасположение файлов” из раскрывающегося там списка:

  • шаблоны документов

  • чертежный стандарт

  • шаблон спецификации

  • база данных материалов

  • основные надписи

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

3 - Установка макросов.

3.1 Создаем новую деталь/чертеж (для каждого будет свой набор макросов)

3.2 В любом месте на верхней панеле проектирования жмякаем ПКМ и выбираем настройки.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

3.3 Переходим на вкладку “команды” и при помощи поиска находим “макрос”

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

3.4 Перетаскиваем иконку “создать кнопку макроса” на панель проектирования в любое удобное тебе место, после чего появляется меню добавления макроса

3.5 Здесь тебе нужно добавить каждый из макросов с расширением “.swp”, создав для каждого из них кнопку. В графе метод могут присутствовать несколько методов - в таком случае выбираем тот у которого присутствует в названии “.main”.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

3.6 Итого для шаблона детали у тебя должны быть добавлены эти макросы:

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

а для чертежа эти:

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

3.7 Если ты всё сделал верно - то всё будет работать. Для проверки работоспособности - создаем деталь с названием “100,100,100 деталь”, сохраняем на рабочий стол. далее создаем чертеж из детали и сохраняем с таким же названием там же (названия одинаковые, расширения разные если что). После того как чертеж сохраним - жмякаем на кнопку “MProp” и смотрим - подтянутся ли туда название и обозначение. Также на чертеже уже должно быть отображено время создания чертежа.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

Ну и теперь осталось бегло пробежаться по списку функций макросов чтобы ты понимал что они умеют и зачем нужны:

4.1 Master - меняет размер форматки, содержит настройки шаблонов. Кнопки “создать основные форматы” и “настроить шаблоны” тыкать только после ознакомления с подробной видеоинструкцией.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

4.2 DProp (выше переименованный мною как “настройка чертежа”) - настройка масштаба, обновление старой форматки, добавление версии изменения и т.п.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

4.4 Roughness - настройка шероховатости на чертеже.

4.5 Save as (иногда и ass) - сохранение чертежа.

4.6 SpecEditor - создает спецификацию, вполне неплохо отсортированную, но иногда чуть чуть ручками поковырять придется. Не забудь указать лист А4-SP-1 или 2 для спецификации. Более подробно - у автора макроса в видео.

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд
Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

Еще я натыкался на такой вот аналог макроса по созданию спецификации:

https://www.youtube.com/watch?v=0OlkVHn7YVY

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

Ну и заключительный пункт: база toolbox для солида. Это что то вроде библиотеки элементов со стандартными элементами и гостовским крепежом. Тут отдельная жопа с поиском верной версии под нужный солид, потому советую тебе погуглить. Я же всегда качал отсюда:

https://leninsw.blogspot.com/2017/02/solidworks-toolbox-2012-2017.html

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

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

#comment_274579348

https://disk.yandex.ru/d/_vymNW25xt7eWQ

И вот, спустя кучу времени и текста - ты настроил солид и можешь сесть поработать, эффективно и спокойно… Блин… Работать…

Я настроил SolidWorks и вам не придется тратить столько времени Solidworks, Солидворкс, Длиннопост, Настройка, Макрос, Для чайников, Инструкция, Гайд

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

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

https://vk.com/axkarlov

https://t.me/cartmanisonfire

https://discord.gg/qYjYE89Tsn

Показать полностью 25
[моё] Solidworks Солидворкс Длиннопост Настройка Макрос Для чайников Инструкция Гайд
335
1437
Mr.Privet
2 года назад
MS, Libreoffice & Google docs
Серия Уроки Excel для чайников и не только

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО⁠⁠

Я решил с двух ног ворваться в тему макросов.

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Кто-то про них слышал, кто-то даже видел, отдельные сверхразумы их даже использовали. Сегодня будет ознакомительный пост: что это вообще такое и как с этим начать работать. Обратите внимание – этот пост тех, кто не знает, что такое макросы и никогда с ними не работал

Первым делом нужно включить вкладку «Разработчик». По умолчанию в Excel ее спрятали, чтобы не взорвать мозг юзерам. Идем в Параметры -> Настройка ленты -> Основные вкладки -> Разработчик (поставить галочку).

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Теперь идем в эту вкладку, нажимаем «Записать макрос» выбираем имя жмакаем «ок». Все, теперь любые действия в Excel надежным образом записываются.

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Давайте теперь что-то сделаем. На пример поменяем заливку ячейки А1, в ячейку A2 напишем значение «Мама, я программист», а в ячейке А3 пропишем формулу текущей даты «=Сегодня()»

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Останавливаем запись макроса. Нажимаем иконку «Макросы», выбираем наш макрос как мы его обозвали, нажимаем кнопку «изменить».

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Появляется окно Microsoft Visual Basic for Applications. Кстати оно также вызывается комбинацией клавиш (Alt + F11) У меня почему-то вызывается только левым Altом, а правым нет, видимо намекая на то что для написания макросов лучше иметь 2 руки (хотя я и одной нажать могу). Появился редактор языка VBA – это язык, который написан специально под офис чтобы на нем писать макросы. В основном окне видим саму эту запись, которую автоматически сделал Excel.

Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("A2").Select
ActiveCell.FormulaR1C1 = "Мама, я программист"
Range("A3").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("A4").Select
End Sub

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

Теперь давайте разбираться что делает этот макрос

Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

(Весь этот кусок от начала говорит нам о том, что с тем элементом что был выделен ранее происходит некоторое дерьмо, в том числе изменение цвета. Вот там, где Color = 255. Все остальное это параметры заливки, которые по итогу не менялись, но макрорекордер решил их тоже записать, на всякий. Это связано с внутренними особенностями работы excel как я понял. Вообще привыкайте к тому что макрорекордер пишет много того что потом вообще можно удалить. Конструкция With – End With позволяет делать несколько действий с одним объектом, на пример выше берется объект Selection.Interior, то есть фон выбранной области и ряду параметров этой заливки назначаются конкретные значения. То есть With нужен для облегчения записи кода, чтобы Selection.Interior не писать вначале каждой строчки.

Range("A2").Select –выделяем ячейку «A2»
ActiveCell.FormulaR1C1 = "Мама, я программист" – пишем в ячейку значение
Range("A3").Select – выделяем ячейку «А3»
ActiveCell.FormulaR1C1 = "=TODAY()" –пишем в ячейку формулу
Range("A4").Select – зачем то выделяем ячейку А4.
End Sub

Теперь при создании нового листа и запуске этого макроса он будет делать все то же самое.

Тут стоит понимать, что половину того что записал макрос можно опустить, так как нам важен результат, а не путь по которому к этому результату пришли, а макрорекордер записывает именно путь. На пример вместо всей конструкции With можно записать

Range("A1").Interior.Color = 255

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

Range(“A2”).Value = ”Мама, я программист”

или писать формулу как в третей ячейке

Range(“A3”).FormulaR1C1 = ”=TODAY()”

С формулами и значениями лично мне не понятно, как excel их интерпретирует, но в макрорекордре он записывает любой ввод в ячейку как ввод формулы. Благо лично у меня при написании макросов не возникает необходимости писать формулы в ячейки. На пример вместо вставки формулы как это было выше можно написать Range(“A3”).Value = Date(), тогда макрос вставит сразу текущую дату в ячейку как значение.

Опытные макроделы пишут макросы сразу без их записи макрорекордером, но это полезный инструмент для самостоятельного изучения при написании макросов: если не знаешь, что как делается в VBА то запускаешь и делаешь, потом смотришь что он там написал.

Теперь давайте напишем какой ни будь полезный макрос, я буду писать строчки и как можно подробнее их комментировать. Комментарии от программы отделяются символом «‘», он ставится вначале комментария. Прошу учесть, что я самоучка и многого не знаю, и просто напишу так ка делаю это сам, возможно есть более изящные решения. Напоминаю, что это просто ознакомительный опус для тех, кто не в зуб ногой.

Sub Colorization()
'начало нашего макроса и его название
Dim x As Integer
'объявляем переменную х типа интеджер, это тип для целых чисел от -32 768 до 32 767 (2 байта),
'она нам нужна для перебора ячеек
For x = 1 To ActiveSheet.UsedRange.Rows.Count
'перебираем х от 1 до конца использованной части листа, то есть не весь лист, а там где есть данные.
'Тут цикл For повторяется от этой строки до строки Next x, которая прописана ниже
If Cells(x, 1).Value = "красный" Then Cells(x, 1).Interior.Color = RGB(255, 0, 0)
'если значение в ячейке равно "красный" то закрашиваем ячейку в красный цвет. Функция If выполняет часть
'после Then если условие между If и Then верно. Так как у нас необходимое действие занимает одну
'строку можно писать в таком виде, если же действий несколько применяется конструкция:
'If … Then
'…
'…
'End If
If Cells(x, 1).Value = "зеленый" Then Cells(x, 1).Interior.Color = RGB(0, 255, 0)
'как выше только в зеленый цвет
If Cells(x, 1).Value = "синий" Then Cells(x, 1).Interior.Color = RGB(0, 0, 255)
'в синий цвет
Next x 'берем следующее значение х, конец цикла For, который мы начали выше
End Sub 'конец макроса
Как работает этот макрос: берет первый столбец, сначала 1 ячейку, смотрит что в ней написано, и если это равно «красный», «зеленый» или «синий», то красит фон ячейки в этот цвет, если нет по пропускает. Потом берет вторую и т. д. до конца активной части текущего листа.
Для проверки работы макроса нам нужен лист, где в первом столбце будут случайным образом прописаны цвета «красный», «зеленый», «синий». Запускаем макрос – когда он отработает ячейки будут раскрашены:

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

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

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

Итак, на этом пока все. Надеюсь теперь те, кто никогда не видел макросов получат о них начальное представление. Дальше буду писать про более практичное применение.

Показать полностью 5
[моё] Макрос Microsoft Excel Обучение Офис Работа Длиннопост
145
1410
GeniusK
GeniusK
9 лет назад

Небольшой макрос для ворда⁠⁠

Пока проходил производственную практику возникла необходимость отредактировать около 300 документов в одной папке. Это были доп. соглашения к ТД, но не суть.

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


Выглядит это так:

*ниже приложу ссылку для скачивания*

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

Путь до папки копируется прямо из проводника:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

С пунктами "что заменить" и "на что заменить" я думаю все понятно.

Чекбокс "с задержкой" предназначен для слабых ПК, дабы постоянное открытие и закрытие документов не загружало память. Текстбокс рядом с чекбоксом предназначен для указания задержки в секундах, 3 секунд на самых слабых ПК более, чем достаточно.


Вот как выглядит сам код:


Private Sub CommandButton1_Click()
Dim s As String, fldr As String
fldr = TextBox1.Value & "\"
s = Dir(fldr & "*.doc")
Do While s <> ""
With Documents.Open(fldr & s)
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = TextBox2.Value
.Replacement.Text = TextBox3.Value
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
If CheckBox1.Value = True Then Call idle(TextBox4)
ActiveDocument.Save
.Close
End With
s = Dir
Loop
MsgBox ("Замена завершена!")
End Sub

И код таймера задержки:

Public Sub idle(n As Single)
Dim t As Single
t = Timer + n
DoEvents
Do While Timer < t
Loop
End Sub

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


Сделал наглядный пример. Создал несколько документов в папке с текстом:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

Заменяем:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

После замены:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

Документ с макросом вы можете скачать по ссылке: https://yadi.sk/d/58JkrdIXtCTtx

*Работает на версиях MS Office 2010 и 2013. Также необходимо разрешить запуск макросов в настройках безопасности:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

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

Показать полностью 6
[моё] Microsoft Word Макрос Vba Длиннопост Microsoft
135
1039
Ray97
Ray97
5 лет назад
MS, Libreoffice & Google docs

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

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


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

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

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

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

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

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

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

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

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

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

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

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

Показать полностью 4
[моё] Microsoft Excel Программирование Офис Оптимизация Visual Basic Макрос Microsoft Word Microsoft office Длиннопост
208
599
Veseliy.4el
Veseliy.4el
5 лет назад
MS, Libreoffice & Google docs

Отслеживание входа пользователей в книгу Excel⁠⁠

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


Этап 1. Создаем "Лог"

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

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Этап 2. Макросы фиксации входа-выхода

Теперь добавим макросы для записи на лист Лог даты-времени и имен пользователей при открытии и закрытии книги. Для этого нужно открыть редактор Visual Basic с помощью сочетания Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer) и найти в левом верхнем углу панель Project (если она не отображается, то включить ее можно сочетанием клавиш Ctrl+R):

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Двойным щелчком откройте модуль ЭтаКнига (ThisWorkbook) и вставьте туда пару наших макросов для обработки событий открытия и закрытия книги:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим дату-время выхода из файла

If lastrow>1 Then Worksheets("Лог").Cells(lastrow, 3) = Now

'сохраняемся перед выходом

ActiveWorkbook.Save

End Sub

Private Sub Workbook_Open()

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим имя пользователя и дату-время входа в файл

Worksheets("Лог").Cells(lastrow + 1, 1) = Environ("USERNAME")

Worksheets("Лог").Cells(lastrow + 1, 2) = Now

End Sub

Попробуйте открыть-закрыть этот файл пару раз и убедитесь, что на лист Лог попадает ваше имя пользователя (логин входа в Windows) и дата-время:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Этап 3. Улучшаем надежность

Можно было бы скрыть лист Лог и на этом остановиться, но есть одно "но": если у пользователя, который открывает нашу книгу, макросы разрешены по умолчанию либо он сам их разрешает, нажав в окне предупреждения на кнопку Включить содержимое, то все в порядке:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Но что если пользователь не разрешит выполнение макросов или они отключены у него по умолчанию? Тогда наши макросы отслеживания выполняться не будут и фиксации имени и даты не произойдет :( Как же заставить пользователя разрешить использование макросов?

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

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

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

Чтобы реализовать все описанное, слегка изменим наши процедуры в модуле ЭтаКнига (ThisWorkbook)

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим дату-время выхода из файла

If lastrow > 1 Then Worksheets("Лог").Cells(lastrow, 3) = Now

'скрываем все листы, кроме листа ПРЕДУПРЕЖДЕНИЕ

Worksheets("Предупреждение").Visible = True

For Each sh In ActiveWorkbook.Worksheets

If sh.Name = "Предупреждение" Then

sh.Visible = True

Else

sh.Visible = xlSheetVeryHidden

End If

Next sh

'сохраняемся перед выходом

ActiveWorkbook.Save

End Sub


Private Sub Workbook_Open()

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим имя пользователя и дату-время входа в файл

Worksheets("Лог").Cells(lastrow + 1, 1) = Environ("USERNAME")

Worksheets("Лог").Cells(lastrow + 1, 2) = Now

'отображаем все листы

For Each sh In ActiveWorkbook.Worksheets

sh.Visible = True

Next sh

'скрываем листы ПРЕДУПРЕЖДЕНИЕ и ЛОГ

Worksheets("Предупреждение").Visible = xlSheetVeryHidden

Worksheets("Лог").Visible = xlSheetVeryHidden

End Sub

Чтобы просмотреть скрытый Лог откройте редактор VisualBasic (Alt+F11), выделите лист на панели Project и измените его видимость на панели Properties, используя свойство Visible:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Если пользователи настолько продвинутые, что знают про суперскрытые листы и могут их отобразить через редактор Visual Basic или нарушить работу наших макросов, то можно дополнительно поставить пароль на просмотр и изменение макросов. Для этого щелкните правой кнопкой мыши по имени файла в панели Project (строка VBAProject (blackbox.xls)), выберите команду VBA Project Properties и включите флажок Lock project for viewing и задайте пароль на вкладке Protection:

Отслеживание входа пользователей в книгу Excel Microsoft Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Теперь точно никто не уйдет безнаказанным.


Интересные поправки в макрос из комментария источника:

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

Private Sub Workbook_Open()

Worksheets("Реестр изменений").Rows("2:2").Insert Shift:=xlDown 'вставляем между строками 1 и 2 новую строку

Worksheets("Реестр изменений").Rows("501:501").Delete Shift:=xlUp 'удаляем строку 501 (реестр на 500 строк)

Worksheets("Реестр изменений").Cells(2, 1) = Environ("USERNAME") 'запись в первую ячейку второй строки

Worksheets("Реестр изменений").Cells(2, 2) = Now 'запись во вторую ячейку второй строки

Показать полностью 6
Microsoft Excel Vba Макрос Полезное Контроль На заметку Длиннопост Системное администрирование
46
394
AmokYu
AmokYu
4 года назад
MS, Libreoffice & Google docs

Макрос замены м2 и м3 на обозначения в верхнем регистре в Word⁠⁠

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

Записано по тексту может быть и "м.кв.",  "кв.м.", и "м2" (аналогично для кубов). Часть этих двоек и троек в "м2" и "м3" нормально степенью в верхнем регистре, а часть просто текстом. Не очень красиво. Хорошо хоть "м^2" и "м^3" нет.


И если текстовые разнообразия написания можно легко привести к единому виду через Ctrl+H, то вручную менять "2" и "3" на надстрочный знак я подзадолбался через пару часов работы. Хоть мышкой, хоть горячими клавишами Ctrl+Shift++ нудно.

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


Полез искать в интернете. Сначала ничего толкового не нашлось - просто несколько способов как поставить знак степени в Word.

Потом-таки я более корректно сформулировал запрос и нашел рабочий макрос.


Все взято с WordExpert

Макрос замены м2 и м3 на обозначения в верхнем регистре в Word Microsoft Word, Макрос, Полезное, Длиннопост

Создайте для этого макроса кнопку на панели инструментов или назначьте сочетание клавиш:


Sub M2a()
Dim rng As Range
Set rng = ActiveDocument.Range
With rng.Find
.MatchWildcards = True
.Text = "[А-яЁё][1-9]{1}"
.MatchCase = False
While .Execute
rng.Characters.Last.Font.Superscript = True
rng.Collapse Direction:=wdCollapseEnd
Wend
End With
End Sub

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

Работает только для русских букв А-я. Латиницу a-z и украинские і, ї, є и прочее нестандартное не меняет!


Сделал свою версию макроса, которая меняет на степень только для буквы "М" и только если после буквы "м"  стоит "2" или "3".

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


Макрос:


Sub ZnakStepeniTolkoM2M3()
Dim rng As Range
Set rng = ActiveDocument.Range
With rng.Find
.MatchWildcards = True
.Text = "[Мм][2-3]{1}"
.MatchCase = False
While .Execute
rng.Characters.Last.Font.Superscript = True
rng.Collapse Direction:=wdCollapseEnd
Wend
End With
End Sub
Макрос замены м2 и м3 на обозначения в верхнем регистре в Word Microsoft Word, Макрос, Полезное, Длиннопост

Может кому-то пригодится.

UPD. Дополнение #comment_190437019

Показать полностью 2
[моё] Microsoft Word Макрос Полезное Длиннопост
37
274
Veseliy.4el
Veseliy.4el
5 лет назад
MS, Libreoffice & Google docs

Редизайнер таблиц в Excel⁠⁠

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


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

- простая однострочная шапка, где у каждого столбца будет свое уникальное название (имя поля)

- одна строка - одна законченная операция (сделка, продажа, проводка, проект и т.д.)

- без объединенных ячеек

- без разрывов в виде пустых строк и столбцов


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

из такой таблицы

Редизайнер таблиц в Excel Microsoft Excel, Макрос, Vba, Таблица, Полезное, На заметку, Длиннопост

сделать

Редизайнер таблиц в Excel Microsoft Excel, Макрос, Vba, Таблица, Полезное, На заметку, Длиннопост

В терминах баз данных нижнюю таблицу обычно называют плоской (flat) - именно по таким таблицам лучше всего строить отчеты сводных таблиц (pivot tables) и проводить аналитику.


Преобразовать двумерную таблицу в плоскую можно при помощи простого макроса. Откройте редактор Visual Basic через вкладку Разработчик - Visual Basic (Developer - Visual Basic Editor) или сочетанием клавиш Alt+F11. Вставьте новый модуль (Insert - Module) и скопируйте туда текст этого макроса:

Sub Redesigner()

Dim i As Long

Dim hc As Integer, hr As Integer

Dim ns As Worksheet

hr = InputBox("Сколько строк с подписями сверху?")

hc = InputBox("Сколько столбцов с подписями слева?")

Application.ScreenUpdating = False

i = 1

Set inpdata = Selection

Set ns = Worksheets.Add

For r = (hr + 1) To inpdata.Rows.Count

For c = (hc + 1) To inpdata.Columns.Count

For j = 1 To hc

ns.Cells(i, j) = inpdata.Cells(r, j)

Next j

For k = 1 To hr

ns.Cells(i, j + k - 1) = inpdata.Cells(k, c)

Next k

ns.Cells(i, j + k - 1) = inpdata.Cells(r, c)

i = i + 1

Next c

Next r

End Sub

После этого можно закрыть редактор VBA и вернуться в Excel. Теперь можно выделить исходную таблицу (полностью, с шапкой и первым столбцом с месяцами) и запустить наш макрос через Разработчик - Макросы (Developer - Macros) или нажав сочетание Alt+F8.


Макрос вставит в книгу новый лист и создаст на нем новый, реконструированный вариант выделенной таблицы. С такой таблицей можно работать "по полной программе", применяя весь арсенал средств Excel для обработки и анализа больших списков.


Также есть второй вариант для работы с большими таблицами

Sub Redesigner()

Dim inpdata As Range, realdata As Range, ns As Worksheet

Dim i&, j&, k&, c&, r&, hc&, hr&

Dim out(), dataArr, hcArr, hrArr

hr = Val(InputBox("Сколько строк с подписями данных сверху?"))

hc = Val(InputBox("Сколько столбцов с подписями данных слева?"))

Set inpdata = Selection

If inpdata.Rows.Count <= hr Or inpdata.Columns.Count <= hc Then Exit Sub

Set realdata = inpdata.Offset(hr, hc).Resize(inpdata.Rows.Count - hr, inpdata.Columns.Count - hc)

dataArr = realdata.Value

If hr Then hrArr = inpdata.Offset(0, hc).Resize(hr, inpdata.Columns.Count - hc).Value

If hc Then hcArr = inpdata.Offset(hr, 0).Resize(inpdata.Rows.Count - hr, hc).Value

ReDim out(1 To Application.CountA(realdata), 1 To hr + hc + 1)

Set ns = Worksheets.Add

For i = 1 To UBound(dataArr, 1)

For j = 1 To UBound(dataArr, 2)

If Not IsEmpty(dataArr(i, j)) Then

k = k + 1

For c = 1 To hc: out(k, c) = hcArr(i, c): Next c

For r = 1 To hr: out(k, c + r - 1) = hrArr(r, j): Next r

out(k, c + r - 1) = dataArr(i, j)

End If

Next j, i

ns.Cells(2, 1).Resize(UBound(out, 1), UBound(out, 2)) = out

End Sub

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

Взято отсюда

Показать полностью 2
Microsoft Excel Макрос Vba Таблица Полезное На заметку Длиннопост
28
183
EasyMacro
3 года назад

Макросы - это просто и полезно. Пост первый, вступительный⁠⁠

Всем привет!

Я долго вынашивал идею писать посты на тему макросов VBA в AutoCAD и Office, и решил все-таки попробовать.


Несмотря на то, что Microsoft уже давно заявил, что перестал развивать Visual Basic, VBA все еще пользуется спросом, что нет-нет, да доказывают мне окружающие, в том числе и пикабушники (@genrix4444 и @Alex0STR, привет!).


Я предлагаю вам учиться со мной на примерах из реальных задач.

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


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

Но сначала кое-что важное:


Материалы данного поста созданы непрофессиональным программистом.

Я не претендую на гордое звание преподавателя, коуча или сенсея.

Я буду показывать решения, которые просто будут работать.

Критика и советы горячо приветствуются.

При, по крайней мере, написании поста ни один настоящий программист не пострадал.


А теперь поехали!


1. Что такое VBA? Зачем оно человечеству?

VBA - Visual Basic for Applications - очень простой язык программирования, на котором можно писать макросы. Макросы – это небольшие программы, которые будут делать скучные и нудные вещи за вас. Или хотя бы делать их не такими скучными и нудными.

Самые популярные программы, которые поддерживают макросы VBA сейчас - AutoCAD и MS Office (Excel, Word и т.д.). Если вы работаете в одной их них (или всех), то мои посты могут вам пригодиться.


2. Как понять, что вам нужен макрос?

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

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


3. Что нужно, чтобы использовать макросы в AutoCAD? А в Excel, Word и т.д.?

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


4. Мне прислали макрос для авткада VBA в формате .dvb. Как его запускать?

Для этого нужно загрузить макрос в автокад.

Это делается во вкладке «Управление» кнопкой «Загрузить приложение», вот тут:

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Макрос будет работать пока вы не закроете автокад. Выбирать файл нужно тут:

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Если вас это не устраивает, и вы хотите, чтобы все примочки из этого макроса были отныне с автокадом навсегда, пока форматирование не разлучит их, то добавьте его в список автозагрузки (кнопка «Приложения» под портфельчиком с надписью «Автозагрузка»).


Чтобы автокад не пугал, что макрос неизвестно откуда и что «может ну его?», лучше папку, в которой лежит dvb, добавить в «Доверенные местоположения», вот тут:

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Теперь можно нажать кнопку «Запустить макрос VBA», выбрать, собственно, что запускать, и нажать «Выполнить»:

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Как видно, в списке тут прописано, из какого файла запускается макрос, потом после «!» идет имя модуля (подробнее о них – ниже), чаще он один на файл, и название «команды».

В моем случае файл запускает «draw_XY» из Module1 файла UTILS.dvb.

Если кому интересно, оно просто подписывает координаты X и Y в точке, в которую пользователь тычет мышкой.

Так вот, все, что произойдет после нажатия кнопки «Выполнить», решается программным кодом. Ничего сложного там нет, смелее читайте дальше. Я смог, и вы сможете.


5. Как написать свой макрос для AutoCAD?

Для начала нужно создать новый проект. Для этого нужно в командной строке автокада ввести VBAMAN (вы стали свидетелем рождения нового супергероя), либо мышкой нажать на список открыть «Диспетчер VBA» вот тут:

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

В появившемся окне, нужно нажать кнопку «Новый», тогда у вас появится строка Global# (в моем случае Global10):

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Это и есть наш новый проект. Пока он не сохранен в файл нигде, поэтому так странно называется и путь к нему не указан.

Теперь нажмем кнопку «Редактор Visual Basic», и увидим что у него, проекта, внутри.

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

А внутри – пустота. Есть только объект «ThisDrawing», который создается по умолчанию. Его даже не удалить (и не надо). Можно писать код прямо туда, но лучше делать отдельный модуль под отдельный набор функций (для чего – расскажу позже, когда это станет легче объяснить). Для этого на папку «AutoCAD Objects» нажимаем правой кнопной, выбираем «Insert – Module».

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Теперь у нас есть отдельный модуль. Самое время разобраться целиком с окошком редактора VBA.

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

1 – Структура проекта. Там всегда будет объект «ThisDrawing» (он тоже своего рода модуль). Еще туда можно надобавлять модулей и форм. Формы – это привычные нам окошки с кнопками, галочками и всем подобным. Окошки – это основная фишка Visual Basic (он поэтому так и называется), с ними оно, конечно, интереснее, но будем разбираться в следующих постах (если хотите вообще).

2 – Свойства выбранного объекта. В нашем случае единственный объект – модуль. Его единственное свойство – его имя. По щучьему велению я переименовал его в EasyMacro1.


Все, что находится правее 1 и 2 – редактор самого программного кода. Считай блокнот, только специальный.


3 – Список объектов внутри модуля. У нас их там нет, поэтому у нас только строка «(General)». Если вы выберите объект «ThisDrawing» (два раза щелкаем левой кнопкой), то там у нас будет еще «AcadDocument».

4 – Список процедур, функций и событий (те же процедуры) этого объекта. У нас оптяь только «(Declarations)». И теперь самое время сказать:


СТОП!

Какие еще процедуры, какие еще функции? Вы бы еще про переменные написали тут!

Вот и приехали. Теперь начинается само программирование.

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

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

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

Теперь приступим.

Начнем с самой идеи макроса, обдумаем в голове, что он будет делать и для чего.

Вот есть у меня чертеж. Пусть это будет, условно, три электрических подземных кабеля, начерченных в плане (вид сверху) в миллиметрах.

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Вот мы видим, что у одной из «веток» длина 52083.65 миллиметра, что, считай, 52 метра 8 сантиметров.

И представим, что кто-то мне сказал, что надо подписать длины этих кусочков. А мне лень. Или их очень много. Или и то, и другое.

Я подумал, попил кофейку, и решил написать макрос, который будет в начало каждой «ветки» вставлять текст, в который будет записывать строчку «L = X.XX м».


Для этого я создам процедуру (а мы помним, что она-то как раз что-то там делает), назову ее writeLengths, чтобы было понятно, что она делает.

Для этого я пишу Sub writeLengths() в редакторе кода, и жму Enter. А редактор сам за меня допишет End Sub.

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

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

Function <имяФункции>() … End Function


Все, что мы напишем промеж строк

Sub writeLengths()

И

End Sub

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

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


А что нам надо? Да только свет в оконце. Нам надо, чтобы макрос брал все полилинии в чертеже (пускай пока вообще все полилинии, ок?), узнавал, какой они длины (ДАННЫЕ УДАЛЕНЫ) и вставлял в чертеж текст с ее значением.

Код будет очень простой, а он будет выглядеть вот так:

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Первые две строки – это объявление переменных. Оно всегда начинается с ключевого слова Dim, потом идет имя переменной, затем ключевое слово As и ее тип.

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

Типов в VBA бывает не так много, какой когда использовать – отдельная микронаука. Для наших скромных целей давайте пока использовать:

Integer – целое число: 1, 42, -12, 0 и т.д. VBA ограничивает их значениями от -2 147 483 648 до 2 147 483 647. Нам хватит.

Double – дробное число: 3.14, 0.0, -0.124 и т.д. Диапазон значений у них очень большой, даже писать не буду. Вам хватит, можете поверить.

String – строка текста. Пишется всегда, обязательно в кавычках: “СТРОКА”.

Boolean – логическая переменная. Ее значение может быть только либо Труъ True либо False. Одно или другое, просто и понятно.


Теперь еще раз посмотрите на код и на меня. Сразу все не так пошло, правда?

У нас объявлена переменная point, ее тип – Double. Но что это за скобки, почему там пробелы?

Дело в том, что это point – это не одно значение Double, а целый их массив.

Массив – это целый набор значений какого-то конкретного типа, со своим размером.

В нашем случае в нем есть три элемента, первый начинается с нуля. В скобках написано (0 to 2), что значит что в массиве будут элементы от 0 до 2, то есть 0, 1, 2. Чтобы получить конкретное число, нужно написать его номер в массиве, например point(1). Если написать point(4), то произойдет апокалипсис ошибка после запуска макроса. Можете попробовать.

Массив (для примера из трех элементов) можно задать так:

<название массива>(0 to 2) as <тип>

или так

<название массива>(2) as <тип>

А можно так

<название массива>(1 to 3) as <тип>

тогда его элементы будут считаться от 1.

Мы сделали от 0, потому что по умолчанию делается так, и это поможет нам избежать путанницы. Ниже увидите в чём.


Дальше у нас идет цикл For each … Next.

Если знание английского языка позволяет, то можно понять, что там творится просто прочитав.

А творится вот что:

Для

каждого

объекта (это, кстати, тоже переменная, просто мы ее отдельно не объявляли вначале, потому что кроме как внутри цикла она нам больше нигде не нужна)

В

«этого чертежа» (имеется в виду тот, который был отрыт, когда мы запустили макрос)

пространстве модели (вы ведь знаете, что кроме модели еще есть листы в автокаде, да?)

выполняются какие-то действия.


Действия, как вы уже поняли, находятся между строк

For Each object In ThisDrawing.ModelSpace

и

Next


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

Это можно сделать с помощью условного оператора:

If <условие> then … End if


В нашем случае берется object.ObjectName (это такое «внутреннее текстовое название» объектов в автокаде, для полилиний оно всегда будет равно «AcDbPolyline»). Если оно как раз равно «AcDbPolyline», то у нас полилиния.


Еще, кстати, условный оператор может выглядеть так:

If <условие> then

<действия1>

Else

<действия2>

End if

В этом случае действия1 выполнятся, если условие верно (то есть равно true, там как раз Boolean), а если не верно (равно false), то выполнятся действия2.


Теперь разберем, что будет происходить, если макрос нашел полилинию (то есть, условие выполнилось).

Мы хотим записать в массив point координаты X и Y первой точки найденной полилинии, чтобы туда вставлять текст.

object.Coordinate(0) – это как раз они - координаты первой точки объекта object (ага, масло масляное, соус сальса). Вершины полилинии тоже считаются с нуля, да. Про это я и говорил выше, когда объяснял, зачем я сделал массив, элементы которого начинается с нулевого. Так вот, эти координаты (X, Y) представлены тоже в виде массива Double (дробных чисел). И тоже считаются от нуля.


Поэтому мы берем первый элемент массива point – point(0) и приравниваем, присваиваем ему значение первого элемента массива object.Coordinate(0) - object.Coordinate(0)(0).

Еще раз: получить массив с координатами первой вершины мы смогли при помощи записи object.Coordinate(0), а уже потом дописываем опять (0), чтобы получить его первый элемент.


Далее уже второму элементу массива point присвоили значение второго элемента массива object.Coordinate(0) - point(1) = object.Coordinate(0)(1)

point(2) = 0,

потому что мы чертим в 2D и координата Z нас не волнует совсем.


А вот дальше – самое интересное.

С помощью ключевого слова Call мы вызываем метод (тоже, считай, процедура) AddText, который есть у пространства модели «этого чертежа».

То есть, получается

Call ThisDrawing.ModelSpace.AddText(...)


В скобках через запятую мы пишем параметры, с которыми оно вызывается:

значение текста, который надо написать (в нашем случае мы туда отправляем object.Length – длина объекта)

точка, в которую этот текст вставляется (наш массив point)

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


Теперь макрос можно запустить и посмотреть, что получилось.

Кстати, из окна редактора VBA можно запустить нажав зеленую стрелочку вверху (рядом с кнопками «Пауза» и «Стоп»).

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

А получилось вот что. Длина проставилась в первой точке. Но она проставилась в миллиметрах. И после запятой знаков слишком много.

Это можно исправить, если отформатировать строку со значением текста.


Делается это так:

Format(<выражение>, <формат выражения>)


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

Например, если мы напишем “#”, то получим только целые части чисел. Было 1,23 стало 1.

Если написать “#.#”, то получим один знак после запятой.

Если вместо решетки писать нули, то они как бы занимают место. То есть с форматом “00.00” число 1.2 будет написано как "01.20". Причем если у нас было бы не 1.2, а 101.2, все рано получилось бы "101.2". До запятой знаки не отрезаются. Логично же, это уже совсем другое число получится.

Еще в формат можно дописывать другие символы, они просто пропишутся как есть. Можно, например, написать “L = 0.00 м”, и мы получим из числа 52083.6472… запись «L = 52083.65».

А это как раз то, что нам нужно, только нам нужно еще и в метрах это все. Для этого object.Length надо просто разделить на 1000.


В общем, исправим код вот так:

Call ThisDrawing.ModelSpace.AddText(Format(object.Length / 1000, "L = 0.00 м"), point, 200)


И результат получим такой:

Макросы - это просто и полезно. Пост первый, вступительный Макрос, Vba, AutoCAD, Microsoft Excel, Урок, Длиннопост

Макрос в определенной мере готов, осталось его сохранить, нажав Ctrl+S, либо “File – Save Global#”.


Конечно, такой макрос дает не очень удобный результат.

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

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


Следующий пост, наверное, напишу тоже на тему автокада, потому что придумать что-то простое, но полезное для Excel пока не удается.


Буду рад видеть в комментариях ваши мнения, просьбы и советы.


Если вы поняли все, но сели писать сами, и у вас ничего не получается - не переживайте. Просто практикуйтесь, ставьте цели и добивайтесь их, а я постараюсь помочь :)

Показать полностью 14
[моё] Макрос Vba AutoCAD Microsoft Excel Урок Длиннопост
34
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии