Skip to content
Хронотехник
Menu
  • Главная
  • О Хронотехнике
  • Рассказы
  • Новости
  • Фотография
  • VBA
Menu
Иллюстрация к статье про VBA

VBA — не одиночка: как заставить Excel разговаривать с другими программами

Posted on 17.11.202517.11.2025 by admin

Содержание

Toggle
  • Умный макрос в Excel
  • Пример макроса VBA
    • А теперь давайте разберём ключевые моменты этого кода:
  • Что дальше? А дальше — настоящая магия!

Умный макрос в Excel

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

Иллюстрация к статье про VBA
Иллюстрация к статье про VBA

Так вот, я открою вам секрет: VBA — это как универсальный переводчик между программами. Он умеет обращаться к Word, Outlook, PowerPoint и даже к интернет-браузеру на их «родном языке».

Зачем это нужно? Самый простой пример — вы готовите красивый отчёт. Данные обрабатываете в Excel (где это удобно), а красивый документ с форматированием хотите получить в Word. Раньше вы бы делали это вручную: скопировали таблицы, вставили, подправили шрифты… Теперь же можно просто сказать программам: «Обменяйтесь данными без меня!».

Пример макроса VBA

Давайте попробуем на живом примере. Создадим макрос, который возьмёт данные из Excel и оформит их в готовый отчёт в Word.

Sub СоздатьОтчётВWord()
    Dim wordApp As Object
    Dim wordDoc As Object
    
    ' Пробуем «позвонить» в Word
    On Error GoTo Упс_WordНеОтвечает
    Set wordApp = CreateObject("Word.Application")
    
    ' Word запустился успешно! Отключаем "страховку"
    On Error GoTo 0
    
    wordApp.Visible = True
    
    ' Создаём новый документ
    Set wordDoc = wordApp.Documents.Add
    
    ' «Диктуем» Word, что писать
    With wordApp.Selection
        .TypeText "Отчёт по продажам"
        .TypeParagraph
        .TypeText "Итого за месяц: " & Range("B10").Value & " рублей"
        .TypeParagraph
        .TypeText "Отчёт создан автоматически из Excel. Здорово, правда?"
    End With

    ' Сохраняем результат
    wordDoc.SaveAs2 ThisWorkbook.Path & "\Мой_Автоотчёт.docx"
    
    MsgBox "Отчёт готов и сохранён!"
    Exit Sub

Упс_WordНеОтвечает:
    MsgBox "Кажется, Word не установлен на этом компьютере.", vbExclamation
End Sub

Если вы запустите этот код, то увидите магию — откроется Word и сам напишет ваш отчёт, подставив нужные цифры из Excel. Ничего копировать не пришлось!

А теперь давайте разберём ключевые моменты этого кода:

wordApp и wordDoc — это как главный управляющий и его помощник.

wordApp — это сам Word как программа. Он может создавать документы, менять настройки, делать вообще всё, что вы делаете в Word руками.

wordDoc — это конкретный документ, с которым мы работаем. Как если бы вы открыли новый файл в Word и дали ему имя.

Строка Set wordDoc = wordApp.Documents.Add — это команда «Создать новый документ».

wordApp.Documents — это все документы, открытые в Word

.Add — значит «добавить новый»

Всё вместе: «Эй, Word, создай новый документ и дай мне с ним работать!»

Блок With wordApp.Selection — это наше «заклинание» для печати текста.

Selection — это текстовый курсор, то место где сейчас находится мигающая палочка в документе

With...End With позволяет не повторять каждый раз wordApp.Selection

Внутри блока мы просто «печатаем»: .TypeText — написать текст, .TypeParagraph — перейти на новую строку

Самое красивое в этой конструкции то, что мы можем брать данные прямо из Excel — вот эта часть: Range("B10").Value достаёт число из ячейки B10 и подставляет его в текст отчёта.

Теперь вы понимаете, как это работает? Word становится вашим личным секретарём, который печатает под диктовку из Excel!

Иллюстрация к статье про VBA
Иллюстрация к статье про VBA

Что дальше? А дальше — настоящая магия!

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

Представьте, что вы можете создать целый конвейер: Excel считает данные, Word оформляет красивый отчёт, Outlook рассылает его по почте, а PowerPoint готовит презентацию для совещания. И всё это — одним нажатием кнопки, пока вы пьёте кофе.

Если вы пропустили наши предыдущие беседы — обязательно загляните в архив канала. Мы там разбирали, как делать код понятнее с помощью оператора Select Case, как защитить его от непредвиденных ошибок, и как вообще подружиться с переменными в VBA.

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

P.S. Кстати, если в вашем Word почему-то нет русского языка — просто замените текст в кавычках на любой другой. Магия сработает точно так же, просто заговорит на другом языке!